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

发布于 2024-12-22 05:31:39 字数 792 浏览 2 评论 0原文

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

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

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

我们当前的解析器返回开始“name”标签的事件。 下一个事件是值为“A &”的字符事件。 B'。

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


Reporting CDATA Events 流式 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。

I have taken over the maintenance of an application that uses a stax parser to break down an XML file of many records into individual records for further processing. Using this type of parser for this purpose is overkill in my opinion but I didn't write it.

The application is now encountering data such as this:

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

Our current parser returns an event for the begin 'name' tag.
The next event is a character event with the value 'A & B'.

From Sun's web page I found this:


Reporting CDATA Events
The javax.xml.stream.XMLStreamReader implemented in the Streaming XML Parser does not report CDATA events. If you have an application that needs to receive such events, configure the XMLInputFactory to set the following implementation-specific report-cdata-event property:

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

The parser we are using does not support the 'report-cdata-event' property.

I want to find a parser that will report such an event so I don't have to check every single piece of text for characters that need to be guarded by the CDATA construct.

UPDATE:

After posting this I browsed some of the related questions and there was mention of the 'isCoalescing' property; for the record it is being set to FALSE.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恋竹姑娘 2024-12-29 05:31:39

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

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

The correct property is: "http://java.sun.com/xml/stream/properties/report-cdata-event".
The property XMLInputFactory.IS_COALESCING must be set to false (default setting).

If these conditions are met, it works fine (tested with Oracle Java 7u51).

羅雙樹 2024-12-29 05:31:39

很确定 Woodstox 应该可以处理这个问题。

Pretty sure Woodstox should handle that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文