【问题标题】:XmlStreamReader not reading complete text valueXmlStreamReader 未读取完整的文本值
【发布时间】:2010-10-06 05:46:04
【问题描述】:

正如我在Reading escape characters with XMLStreamReader 看到的那样,这个问题似乎以前出现过

但我在这里看到的问题略有不同。

我正在阅读一个非常大的 XML 文件,其中包含一个大的格式错误的 html 的 sn-p 作为标记值之一。这些值包含在 CDATA 中,通常不会导致任何问题。但间歇性地,XMLSTreamReader 类的 getText 方法仅读取此 CDATA 中的一半文本,并且下一批中的第一个字符作为示例:“

”,解析器将其视为 Start 节点而不是 Character,导致解析失败。

有没有人在使用 Stax 解析器之前遇到过这个问题。我在 jdk1.,5 上使用 sjsxp1.0.1 实现

任何帮助或疯狂的想法将不胜感激,因为我现在没有所有想法。

【问题讨论】:

    标签: java xml xml-parsing stax xmlpullparser


    【解决方案1】:

    我想我在这个问题上取得了一些进展。问题似乎出在 sjsxp 实现中(即使是最新的)。有时 getText 方法不会读取整个文本,如果你像我一样不幸,你会遇到一个标签,这会导致问题。 我们计划对可能起作用的值进行编码,但我们也尝试了 woodstox 实现(http://woodstox.codehaus.org),这似乎可以处理这种情况。所以想问一个后续问题呢

    有没有其他人使用过 Woodstox 的 Stax 实现并知道与 sjsxp 相比是否存在任何问题?

    【讨论】:

    • Woodstox 的问题较少,并且会专门解决您遇到的问题。我认为 Sjsxp 实际上不支持 IS_COALESCING,尽管它是所有符合要求的实现都应该支持的强制性 Stax 属性(我认为也有一个 bugparade 错误)
    • 顺便说一句:据我所知,Sjsxp 自从加入 JDK 后就没有得到积极的开发;有一些错误修复,但我认为 JDK 有很多其他工作,这不是优先事项。写它的人几年(4+)前离开了公司;实现是基于 Xerces 内部的,所以它不是一个干净的重写。这只是作为背景(我当天与他交换了几封电子邮件)
    猜你喜欢
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多