使用java将新标签附加到现有的xml [英] Appending new tag to the existing xml using java

查看:44
本文介绍了使用java将新标签附加到现有的xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的源代码需要在一些现有标签之间追加/添加新标签到我硬盘上的 XML 文档.我很困惑我需要使用什么样的解析器来完成这个任务.

My source code needs to append/add new tags between some existing tags to XML document what I have on my hard-disk. I am seriously confused what kind of parser do I need to use to complete this task.

我所拥有的 XML 文档类似于:

XML document what I have looks similar to:

<school>
<teacher>
<name>XXXXX</name>
<gender>XXXX</gender>
</teacher>
</school>

需要这个 XML 文档是:

Need this XML document to be:

 <school>
<teacher>
<name>XXXXX</name>
<gender>XXXX</gender>
</teacher>
<!--need to append student tag-->
<student>
<name>XXXXXX</name>
<gender>XXXXX</name>
</student>
</school>

所以,请帮助我选择高效的 xmlparser 来完成这项工作.另外,如果您能向我展示示例源代码来完成这项任务,我将不胜感激.

So, please help me in choosing efficient xmlparser in achieving this job.also, I appreciate if you can show me sample source code to achieve this task.

提前致谢..

推荐答案

XOM 是最简单的 XML 系统爪哇.您可以通过操作 XOM 树本身来避免很多混乱.

XOM is the simplest XML system for Java. You can avoid quite a lot of clutter by manipulating the XOM tree itself.

public void test() throws ParsingException, ValidityException, IOException {
    String xml = "<school><teacher><name>XXXXX</name><gender>XXXX</gender></teacher></school>";
    String add = "<student><name>XXXXXX</name><gender>XXXXX</gender></student>";
    Builder parser = new Builder();
    // Parse them.
    Document school = parser.build(new ByteArrayInputStream(xml.getBytes()));
    Document student = parser.build(new ByteArrayInputStream(add.getBytes()));
    // Manipulate - remember to copy.
    school.getRootElement().appendChild(student.getRootElement().copy());
    // To XML.
    System.out.println(school.getRootElement().toXML());
}

印刷品:

<school><teacher><name>XXXXX</name><gender>XXXX</gender></teacher><student><name>XXXXXX</name><gender>XXXXX</gender></student></school>

    <school>
        <teacher>
            <name>XXXXX</name>
            <gender>XXXX</gender>
        </teacher>
        <student>
            <name>XXXXXX</name>
            <gender>XXXXX</gender>
        </student>
    </school>

然而,对于重要的项目,将 XML 编组为对象、操作对象并将它们解组回 xml 可能是更好的解决方案(如@KyleStoflet 所建议的那样).

For significant projects however, it would probably be a better solution to marshal the XML into objects, manipulate the objects and unmarshal them back to xml (as suggested by @KyleStoflet).

或者 - 您可以使用蛮力并直接操作字符串.这令人深恶痛绝.

Alternatively - you could use brute-force and manipulate the strings directly. This is deeply frowned-upon.

public void test() {
    String xml = "<school><teacher><name>XXXXX</name><gender>XXXX</gender></teacher></school>";
    String add = "<student><name>XXXXXX</name><gender>XXXXX</gender></student>";
    StringBuilder both = new StringBuilder(xml)
            .insert(xml.indexOf("</school>"), add);
    System.out.println(both);
}

这篇关于使用java将新标签附加到现有的xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆