【发布时间】:2014-05-27 03:39:23
【问题描述】:
使用节点列表合并多个 xml 文件,我在下面的代码中使用,但它的输出文件有重复(重复)值。
xml文件文件夹结构如下图
c:|--20140525214726/search.xml
|--20140525214727/search.xml
|--20140525214728/search.xml
|.
|.
|--20140525214736/search.xml
代码是:
我在 for 循环中使用了 int k 来遍历上面显示的所有文件夹。
并附加了从20140525214727到20140525214736到20140525214726/search.xml文件的所有文件的PropertyDetails节点。
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setIgnoringComments(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(new File("C:\\20140525214726\\search.xml"));
NodeList nodes = doc.getElementsByTagName("PropertyDetails");
for(int k=26; k<=37; k++){
Document doc1 = builder.parse(new File("C:\\201405252147"+k+"\\search.xml"));
NodeList nodes1 = doc1.getElementsByTagName("PropertyDetails");
for(int i=0;i<nodes1.getLength();i=i+1){
Node n= (Node) doc.importNode(nodes1.item(i), true);
nodes.item(i).getParentNode().appendChild(n);
}
}
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
Writer output = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("SeeOfXML.xml"), "UTF-8"));
String xmlOutput = result.getWriter().toString();
output.write(xmlOutput);
output.close();
我的代码合并多个 xml 文件有什么问题吗?
【问题讨论】:
-
运行时会发生什么?有什么例外吗?
-
@helderdarocha 没有例外,但节点(
)正在重复(重复节点) -
我想我找到了。您正在重复第一个文件的节点。
标签: java xml nodelist xmlnodelist