是否有办法从vtd-xml解析的大型xml文件(>200 MB)中删除注释?
都是根元素之前的注释。
<!-- comment -->
<rootElement>
.
.
.
</rootElement>和内部的评论
<rootElement>
<book>
<!-- comment -->
</book>
</rootElement>最好的解决方案是使用xPath。我试过了
//comment(),它适用于DOM,但不适用于vtd-xml。
下面是我选择注释的代码
String xPath = "//comment()"
XMLModifier xm = new XMLModifier();
VTDGen vg = new VTDGen();
if (vg.parseFile(fnIn,true)){
VTDNav vn = vg.getNav();
xm.bind(vn);
nodeXpath(xPath,vn);
}
private void nodeXpath(String xPath, VTDNav vn) throws Exception{
int result;
AutoPilot ap = new AutoPilot();
ap.selectXPath(xPath);
ap.bind(vn);
while((result = ap.evalXPath())!=-1){
int p = vn.getText();
if (p!=-1) {
System.out.println(vn.getText() + ", " + vn.toString(p));
}
}
}但这里什么都没有印出来。
有什么方法可以用vtd xml来实现吗?
谢谢你的帮助。
发布于 2015-08-19 16:36:22
你说过你的代码不会在屏幕上打印任何东西.连逗号都没有?我不认为它会从getText()中打印任何东西,因为getText()文档似乎表明它返回“类型字符数据或CDATA",我认为它不包括注释的内容。(谢谢您,@vtd-xml-作者,确认了这一点。)
一个很好的测试是在 p = vn.getText()之前,在while循环p = vn.getText()的每一次迭代中打印一些东西,这样您就可以知道它是否找到了注释。
如果它正在查找注释,我想您会希望在每个评论上调用xm.removeToken(result)。
https://stackoverflow.com/questions/32054846
复制相似问题