使用JAVA合并多个XML文件的不同节点 [英] Merging different nodes of multiple XML files using JAVA
问题描述
我在arrayList中有一些xml文件,例如A.xml B.xml
我想合并一些节点,而其余部分则保留为使用java时的样子.我是新手,所以我不知道该怎么做.
I have some xml files in an arrayList, for example A.xml B.xml
and I want to merge some of the nodes while the rest to remain as are using java. I'm new at using so I don't know how to do.
xml:
<?xml version="1.0" encoding="UTF-8"?>
<nta>
<declaration>
bool A, B;
bool C;
</declaration>
<template>
<location id="1" x="10" y="10"/>
<transition>
<source ref="3"/>
</transition>
</template>
<system> system AND;</system>
</nta>
B.xml:
<?xml version="1.0" encoding="UTF-8"?>
<nta>
<declaration>
int f,k;
bool D;
</declaration>
<template>
<location id="100" x="40" y="89"/>
<transition>
<source col="9"/>
</transition>
</template>
<system> system OR;</system>
</nta>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<nta>
<declaration>
bool A, B;
bool C;
int f,k;
bool D;
</declaration>
<template>
<location id="1" x="10" y="10"/>
<transition>
<source ref="3"/>
</transition>
</template>
<template>
<location id="100" x="40" y="89"/>
<transition>
<source col="9"/>
</transition>
</template>
<system> system AND, OR;</system>
</nta>
基本上我想将declaration
和system
以及其余部分合并到输出xml文件中以串行方式进行.如何使用JAVA做到这一点?抱歉,很长的帖子!!
Basically I want to merge the declaration
and the system
and the rest to be serial in the output xml file. How to do this using JAVA? Sorry for the long post!!!
推荐答案
与其他可用的XML处理API相比,对我来说,
拥有DOMBuilder
和SAXBuilder
JDOM 更适合:
In comparison with other available XML processing API, to me,
having DOMBuilder
and SAXBuilder
JDOM is better for:
- 修改XML文档
- 遍历XML树并随机访问任何部分
- 合并文件
这是合并两个XML文档的完整工作示例:
This is a complete working example for merging two XML document:
SAXBuilder builder = new SAXBuilder();
Document doc1 = builder.build(new File("E:\\XML1.xml"));
Document doc2 = builder.build(new File("E:\\XML2.xml"));
String rootName = doc1.getRootElement().getName();
Element newRoot = new Element(rootName);
Document newDoc = new Document(newRoot);
Element root1 = doc1.getRootElement();
Element root2 = doc2.getRootElement();
// creating declaraion element by merging the declaration content
Element declaration = new Element("declaration");
declaration.addContent(root1.getChildText("declaration"));
declaration.addContent(root2.getChildText("declaration"));
newRoot.addContent(declaration); // add declaration element to new document
newRoot.addContent(root1.getChild("template").clone());
// directly adding template from document XML1,
//after getting template child,
//it needs to be cloned to detached from its parent
newRoot.addContent(root2.getChild("template").clone());
// same for document XML2
/*** now code yourself for system element here ***/
XMLOutputter outputter = new XMLOutputter();
outputter.output(newDoc, System.out);
// output the new doc, pass your OutputStream to this function
这篇关于使用JAVA合并多个XML文件的不同节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!