英文:
merging two xmls of same number of nodes
问题
我使用Java DOM解析器合并了两个XML文件:
a.xml
<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type="1"></mime-type>
<!-- eps -->
<mime-type type="2"></mime-type>
<!-- octet-stream -->
<mime-type type="3"></mime-type>
</category>
</config>
b.xml:
<config>
<category name="mimetypes">
<!-- application mime types -->
<!-- eps -->
<mime-type type="2"></mime-type>
<!-- octet-stream -->
<mime-type type="3"></mime-type>
<mime-type type="4"></mime-type>
</category>
</config>
我得到的输出是:
<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type="1"></mime-type>
<!-- eps -->
<mime-type type="2"></mime-type>
<!-- octet-stream -->
<mime-type type="3"></mime-type>
</category>
<mime-type type="2"></mime-type>
</config>
期望的输出是:
<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type="1"></mime-type>
<!-- eps -->
<mime-type type="2"></mime-type>
<!-- octet-stream -->
<mime-type type="3"></mime-type>
<mime-type type="4"></mime-type>
</category>
</config>
我尝试过的代码是:
public class MergeXmlDemo {
public static void main(String args[]) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
Document doc = null;
Document doc2 = null;
db = dbf.newDocumentBuilder();
doc = db.parse(new File("second.xml"));
doc2 = db.parse(new File("first.xml"));
NodeList ndListFirstFile = doc.getElementsByTagName("config");
Node nodeArea = doc.importNode(doc2.getElementsByTagName("mime-type").item(0), true);
ndListFirstFile.item(0).appendChild(nodeArea);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
}
}
将两个具有相同节点数的XML文件合并后,输出的文件节点数相同,并且输出中缺少类型为4的
英文:
I have merged two xml files using java dom parser:
a.xml
<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type=1></mime-type>
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
</category>
</config>
b.xml:
<config>
<category name="mimetypes">
<!-- application mime types -->
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
<mime-type type=4></mime-type>
</category>
</config>
the output I get
<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type=1></mime-type>
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
</category>
<mime-type type=2></mime-type>
</config>
Expected:
<config>
<category name="mimetypes">
<!-- application mime types -->
<mime-type type=1></mime-type>
<!-- eps -->
<mime-type type=2></mime-type>
<!-- octet-stream -->
<mime-type type=3></mime-type>
<mime-type type=4></mime-type>
</category>
</config>
Code I have tried:
public class MergeXmlDemo {
public static void main(String args[]){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
Document doc = null;
Document doc2 = null;
db = dbf.newDocumentBuilder();
doc = db.parse(new File("second.xml"));
doc2 = db.parse(new File("first.xml"));
NodeList ndListFirstFile = doc.getElementsByTagName("config");
Node nodeArea = doc.importNode(doc2.getElementsByTagName("mime-type").item(0), true);
ndListFirstFile.item(0).appendChild(nodeArea);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
//StreamResult result = new StreamResult(new StringWriter());
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
}
merging two xml files with same number of nodes is giving the file with same number of nodes and type=4 is missing from the output.
Any help is appreciated
专注分享java语言的经验与见解,让所有开发者获益!
评论