在我的Java应用程序中,我需要在CDATA中解析包含控制字符0x2
的XML文档。
我尝试了几种方法,但是通过了尝试。我想避免任何类型的编码。
XML1.1中有什么办法吗?
答案 0 :(得分:11)
我需要在CDATA中解析包含控制字符0x2的xml
那不是XML。任何地方的原始控制字符U + 0002意味着它没有格式良好,因此不是XML文档。
仅在XML 1.1中,可以包含编码为字符引用的控制字符。因此,您可能尝试通过在解析之前使用\x02
对
执行字符串替换来解决此问题。但是,您不能将字符引用放在CDATA部分中,因此也不会飞行。
编辑:你可以在短期内修复它,如果你绝对确定每个杂散的U + 0002字符都在CDATA部分内,可以用以下代码替换:
]]><![CDATA[
然而,这是超级shonky。无论何时生成错误的XML都需要修复。去负责创建它的人!
答案 1 :(得分:2)
XML不能包含ASCII控制字符(除了TAB,CR和LF),甚至不包含在CDATA部分内。它们不被XML规范所禁止。
将二进制数据编码为Base64字符串并将其写入XML。在这种情况下不需要CDATA。