gpt4 book ai didi

java - Stax 将 Text+CDATA+Text 视为单个 CHARACTERS 部分

转载 作者:行者123 更新时间:2023-11-29 07:21:07 25 4
gpt4 key购买 nike

使用 Stax,我惊讶地发现一个 XML block ,例如:

<badger>
<![CDATA[Text about a badger]]>
</badger>

被视为:

START_ELEMENT (badger)
CHARACTERS ( Text about a badger )
END_ELEMENT (badger)

也就是说,CDATA 和周围的文本被展平为一个文本元素。未检测到 CDATA 元素。

这是正确的行为吗?如何将空格与 CDATA 分开?

我正在使用 woodstox 实现。

最佳答案

我怀疑您将属性“XMLInputFactory.IS_COALESCING”设置为 true(或者,正在使用默认启用它的 Woodstox 3.2——这不是默认的 stax 规范建议的,即是一个小错误)。这会强制将 CDATA 转换为字符,并合并相邻的文本段(如果有)。

除此之外,Woodstox 确实将 CDATA 部分报告为不同的部分;但 Stax 规范对转换有一些“有趣”的要求——专家组成员似乎不喜欢 CDATA 的处理方式与 CHARACTERS 有任何不同。

因此:如果您确实想让它们单独报告,请确保禁用 IS_COALESCING:

inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);

关于java - Stax 将 Text+CDATA+Text 视为单个 CHARACTERS 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356574/

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