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



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

我有一个XML文件,

我想把它分成小的XML文件,当然,当我在<DOCUMENT> Element上达到一定的数量时,我必须拆分它,我必须在每个小XML文件中放置60个<DOCUMENT>

我的文档的格式是这样的:

<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>

所以我的问题是我怎样才能在每个文件中拆分它有 60 个<DOCUMENT> ? 并且做得非常快。

如果有人有使用 Talend 的解决方案,那就太好了。 知道使用 tXMLOutput 我可以拆分它,但它只会从每个循环中获取一个元素和我的"文档"循环的所有元素

你可以 Stax API 来读取文件,然后将 60 个这个元素放在一个新文件中。有关示例,您可以阅读此答案

在示例中,将为每个元素创建文件。在您的问题中,您可以像这样每 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);
}

最新更新