我的问题对某些人来说很简单,对其他人来说是不可能的(像我一样)
我有一个XML文件,我想把它拆分成小的XML文件,当然我要在<DOCUMENT>
元素达到一定数量时将其拆分,我要放60 {{1}在每个小的XML文件中。
我的文档格式如下:
<DOCUMENT>
所以我的问题是如何在每个文件中拆分60 <DOCS>
<PIL>
<ELEMENT1>
<ELEMENT2>
<ELEMENT1>
<PIL>
<DOCUMENT>
<ELEMENT1>
<ELEMENT2>
<ELEMENT3>
<ELEMENT4>
<SUBELEMENT1>
<ELEMENT1>
<ELEMENT1>
<ELEMENT1>
</SUBELEMENT1>
<SUBELEMENT2>
<ELEMENT1>
<ELEMENT1>
<ELEMENT1>
</SUBELEMENT2>
</ELEMENT4>
<ELEMENT5>
<ELEMENT6>
</DOCUMENT>
</DOCS>
?并且做得很快。
如果有人使用Talend有一个很好的解决方案。知道使用tXMLOutput我可以拆分它但它只需要每个循环中的一个元素和我的“文档”循环的所有元素
答案 0 :(得分:1)
您可以使用Stax API读取文件,然后将60个此元素放入新文件中。例如,您可以阅读this answer
在示例中,为每个元素创建文件。在您的问题中,您可以每60次迭代创建一个不同的文件,如此
int counter=0;
int fileNumber=1;
File file = new File("out/split1.xml");
StreamResult sr=new StreamResult(file);
while(xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
counter++;
if (counter>60) {
counter=0;
fileNumber++;
file = new File("out/split"+fileNumber+".xml");
sr=new StreamResult(file);
}
t.transform(new StAXSource(xsr), sr);
}