【问题标题】:Parsing XML with CDATA via VTD通过 VTD 使用 CDATA 解析 XML
【发布时间】:2017-06-14 10:18:06
【问题描述】:

根据this answer,VTD 应该能够解析CDATA 的记录。 但是,似乎解析不适用于 2.13 版(来自 maven repo)和从 sourceforge 下载的最新 2.13.2。

这是我正在使用的测试:

private String xmlCDATA = "<p><![CDATA[ [Hello [World]] ! ]]></p>" ;";

@Test
public void testCDATA() throws Exception {
    VTDGen vg = new VTDGen();
    vg.setDoc(xmlCDATA.getBytes());
    vg.parse(false);
}

我得到的例外:

        com.ximpleware.ParseException: Error in CDATA: Invalid termination sequence
    Line Number: 1 Offset: 27
    at com.ximpleware.VTDGen.process_cdata(VTDGen.java:3092)
    at com.ximpleware.VTDGen.parse(VTDGen.java:2640)

感谢任何帮助!

【问题讨论】:

  • 该修复应该在 2.13.2 中发布,但其他一些错误修复让我改变了主意,以便 2.13.2 修复最紧迫的 xpath 评估问题...... CDATA 修复程序将在 2.13.3 发布,以及更多修复程序.. 你可以去 CVS 下载修复程序,我将发布一个链接

标签: xml cdata vtd-xml


【解决方案1】:

您似乎缺少尾随 > 字符...这是终止 CDATA 段所必需的... iow,它应该是 ]]>

更新:我进行了检查并管理了一个快速发布版,其中包含两个地方的此错误修复:一个在 VTDGen.java 中,另一个在 VTDGenHuge.java 中

【讨论】:

  • 谢谢,确实我使用了错误的“最小”字符串进行测试。我已经用正确的 XML 字符串更新了问题,其中“[”和“]”出现在 CDATA 中。这似乎打破了解析。你能验证一下吗?
  • 感谢您的错误报告!
猜你喜欢
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
相关资源
最近更新 更多