使用XML1.1解析unicode字符(0x2)

时间:2010-04-12 13:55:11

标签: xml-parsing

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

我尝试了几种方法,但是通过了尝试。我想避免任何类型的编码。

XML1.1中有什么办法吗?

2 个答案:

答案 0 :(得分:11)

  

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

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

仅在XML 1.1中,可以包含编码为字符引用的控制字符。因此,您可能尝试通过在解析之前使用\x02执行字符串替换来解决此问题。但是,您不能将字符引用放在CDATA部分中,因此也不会飞行。

编辑:你可以在短期内修复它,如果你绝对确定每个杂散的U + 0002字符都在CDATA部分内,可以用以下代码替换:

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

然而,这是超级shonky。无论何时生成错误的XML都需要修复。去负责创建它的人!

答案 1 :(得分:2)

XML不能包含ASCII控制字符(除了TAB,CR和LF),甚至不包含在CDATA部分内。它们不被XML规范所禁止。

将二进制数据编码为Base64字符串并将其写入XML。在这种情况下不需要CDATA。