7

在我的 Java 应用程序中,我需要解析包含0x2CDATA 中的控制字符的 XML 文档。

我尝试了几种方法,但无法通过。我想避免任何形式的编码。

XML1.1有什么办法吗?

4

2 回答 2

11

我需要在 CDATA 中解析包含控制字符 0x2 的 xml

那不是XML。任何地方的原始控制字符 U+0002 意味着它的格式不正确,因此不是 XML 文档。

仅在 XML 1.1 中,可以包含编码为字符引用的控制字符。因此,您可能已尝试通过在解析之前进行字符串\x02替换来修复它。但是,您不能将字符引用放在 CDATA 部分中,所以这也行不通。

编辑:如果您绝对确定每个杂散的 U+0002 字符都在 CDATA 部分内,则可以在短期内修复它,方法是将每个字符替换为:

]]>&#2;<![CDATA[

然而,这是超级shonky。首先需要修复生成错误 XML 的任何内容。去踢负责创建它的人!

于 2010-04-12T14:12:04.303 回答
2

XML cannt contain ASCII control characters (apart from TAB, CR and LF), not even inside a CDATA section. They are disallowed by the XML spec.

Encode binary data into Base64 strings and write them to XML. No need for CDATA in this case.

于 2010-04-12T14:01:00.890 回答