gpt4 book ai didi

Java:如何将 XML 流拆分为具有父节点的小型 XML 文档。 VTD-XML

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:48 25 4
gpt4 key购买 nike

我需要使用 VTD XML 和 XPath 读取大型 xml,并将结果拆分到多个节点中。我找到了一些解决方案here但它 split 节点但没有 parent 信息。

我为什么要寻找:

XPath 字符串:/CATALOG/MAIN/CD基于XPath的文档应该被分割

1) 初始文档:

<CATALOG>
<MAIN id="1">
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
</CD>
<CD>
<TITLE>Empire Dummy</TITLE>
<ARTIST>John Doe</ARTIST>
</CD>
<USEFUL>Useful node</USEFUL>
</MAIN>
<MAIN id="2">
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary More</ARTIST>
</CD>
</MAIN>
<IGNORED>Ignored node</IGNORED>
</CATALOG>

2) 结果: 文档1:

<CATALOG>
<MAIN id="1">
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
</CD>
<USEFUL>Useful node</USEFUL>
</MAIN>
</CATALOG>

文档2:

<CATALOG>
<MAIN id="1">
<CD>
<TITLE>Empire Dummy</TITLE>
<ARTIST>John Doe</ARTIST>
</CD>
<USEFUL>Useful node</USEFUL>
</MAIN>
</CATALOG>

文档3:

<CATALOG>
<MAIN id="2">
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary More</ARTIST>
</CD>
</MAIN>
</CATALOG>

感谢您的时间和建议。

最诚挚的问候!

最佳答案

下面的代码执行您在 vtd-xml 中描述的操作。如果有任何问题请告诉我。

import com.ximpleware.*;
import java.io.FileOutputStream;

public class splitTest {

public static void main(String[] a) throws VTDException,java.io.IOException{
VTDGen vg = new VTDGen();
if (vg.parseFile("C:\\Users\\Jimmy Zhang\\workspace\\ximple-dev\\DOMTest\\test111.xml", false)){
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/CATALOG/MAIN");
byte[] header = "<CATALOG>".getBytes();
byte[] tail = "</CATALOG>".getBytes();
int i = -1,j=0;
while((i=ap.evalXPath())!=-1){
long l = vn.getElementFragment();
FileOutputStream fops = new FileOutputStream("c:\\xml\\output"+j+".xml");
fops.write(header);
fops.write(vn.getXML().getBytes(), (int)l, ((int)(l>>32)));
fops.write(tail);
fops.close();
j++;
}

}
}
}

关于Java:如何将 XML 流拆分为具有父节点的小型 XML 文档。 VTD-XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com