首页 文章

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

提问于
浏览
5

我接管了一个使用stax解析器的应用程序的维护,将许多记录的XML文件分解为单个记录以供进一步处理 . 为此目的使用这种类型的解析器在我看来是过度的,但我没有写它 .

该应用程序现在遇到如下数据:

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

我们当前的解析器返回begin'name'标记的事件 . 下一个事件是值为'A&B'的字符事件 .

从Sun的网页上我发现了这个:


报告CDATA事件Streaming XML Parser中实现的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 .

2 回答

  • 1

    非常确定Woodstox应该处理 .

  • 8

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

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

相关问题