Java - 包含许多循环的拆分XML文件

时间:2017-06-23 07:36:57

标签: java xml split talend

我的问题对某些人来说很简单,对其他人来说是不可能的(像我一样)

我有一个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我可以拆分它但它只需要每个循环中的一个元素和我的“文档”循环的所有元素

1 个答案:

答案 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);
}