gpt4 book ai didi

java - 需要一个 CDATA 事件通知 java 的 stax 解析器

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:51 24 4
gpt4 key购买 nike

我接管了一个应用程序的维护,该应用程序使用 stax 解析器将包含许多记录的 XML 文件分解为单独的记录以供进一步处理。在我看来,为此目的使用这种类型的解析器有点矫枉过正,但我​​并没有编写它。

应用程序现在遇到这样的数据:

<name><![CDATA[A & B]]></name>

我们当前的解析器返回开始“名称”标签的事件。下一个事件是值为“A & B”的角色事件。

我从 Sun 的网页上找到了这个:


报告 CDATA 事件流式 XML 解析器中实现的 javax.xml.stream.XMLStreamReader 不报告 CDATA 事件。如果您有需要接收此类事件的应用程序,请配置 XMLInputFactory 以设置以下特定于实现的 report-cdata-event 属性:

XMLInputFactory factory = XMLInptuFactory.newInstance();
factory.setProperty("report-cdata-event", Boolean.TRUE);

我们使用的解析器不支持“report-cdata-event”属性。

我想找到一个将报告此类事件的解析器,这样我就不必检查每段文本中是否有需要由 CDATA 构造保护的字符。

更新:

发布这篇文章后,我浏览了一些相关问题,其中提到了“isCoalescing”属性;作为记录,它被设置为 FALSE。

最佳答案

正确的属性是:“http://java.sun.com/xml/stream/properties/report-cdata-event”。属性 XMLInputFactory.IS_COALESCING 必须设置为 false(默认设置)。

如果满足这些条件,它就可以正常工作(使用 Oracle Java 7u51 测试)。

关于java - 需要一个 CDATA 事件通知 java 的 stax 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8591644/

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