【问题标题】:Removing comments from xml file with vtd-xml , delete comment使用 vtd-xml 从 xml 文件中删除注释,删除注释
【发布时间】:2015-08-20 00:36:22
【问题描述】:

有没有办法从 vtd-xml 解析的巨大 xml 文件 (>200 MB) 中删除 cmets?

两者,根元素之前的cmets

<!-- comment -->
<rootElement>
.
.
.
 </rootElement>

和里面的cmets

<rootElement>
<book>
<!-- comment -->
</book>
</rootElement>

最好的解决方案是使用 xPath。我试过了

//comment()

适用于 DOM 但不适用于 vtd-xml

这是我选择 cmets 的代码

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 做到这一点?

感谢您的帮助。

【问题讨论】:

  • 您说 XPath 表达式不适用于 VTD-XML。您到底尝试了什么,结果如何?也许看看stackoverflow.com/a/22161292/423105 会帮助你更多地解决更具体的问题。
  • 我知道如何使用 xPath 表达式和修饰符。我尝试了 //comment() 作为表达式,但它不起作用。在 DOM 中,它选择了正确的文本。也许 vtd-xml 有可能识别文档中的所有 cmets,无论它们在哪里
  • 是的,相同的 //comment() 表达式应该选择 VTD-XML 中的所有 cmets。那么问题是你如何使用它来删除它们。向我们展示您的 VTD-XML 代码(Java、C# 或其他),也许我们可以帮助您找出它不起作用的原因。
  • 嗨 LarsH,我在我的问题中添加了代码。
  • 您提到您的代码不会在屏幕上打印任何内容...甚至没有逗号?我不希望它一定会从getText() 打印任何内容,因为 getText() 的文档似乎表明它返回“类型字符数据或 CDATA”,我认为这不包括评论的内容。一个好的测试是在 while 循环 before p = vn.getText() 的每次迭代中打印一些东西,这样你就会知道它是否找到了 cmets。

标签: xml xpath vtd-xml


【解决方案1】:

您提到您的代码不会在屏幕上打印任何内容...甚至没有逗号?我不希望它一定会打印来自getText() 的任何内容,因为getText() 的文档似乎表明它返回“类型字符数据或CDATA”,我认为它不包括评论的内容。 (感谢@vtd-xml-author 的确认。)

一个好的测试是在你的while循环之前p = vn.getText()的每次迭代中打印一些东西,这样你就会知道它是否找到了cmets。

如果它正在寻找 cmets,我想你会想在每个上调用 xm.removeToken(result)

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 2023-02-01
    • 2013-03-26
    • 2015-02-01
    • 2014-06-27
    • 2017-12-23
    • 2023-01-16
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多