我必须处理XML文档 1 ,其中包含使用包含CDATA
的{{1}}块表示的某些文本数据(例如错误消息) - 非ASCII的样式转义单字节字符集的字符(在我的例子中是Windows-1251)。
一个例子是
\xNN
其中每个<TEXT><![CDATA[\xd1\xe0\xe9\xf2 \xe2\xf0\xe5\xec\xe5\xed\xed\xee ...]]></TEXT>
位对Windows-1251指令表的单个字符进行十六进制编码。
我无法从XML 1.0规范中收集的内容是\xNN
块中包含的内容的语义,而不是“字符数据”。因此,问题是:解析此类CDATA
块时应该处理这些反斜杠转义的XML解析器,考虑到它从文档的XMLDecl
解析出的编码或这种编码的存在字符数据在XML本身中没有任何意义,解析器应该返回从CDATA
块“原样”提取的任何内容,并由我来进一步解码它们?
1 由Amadeus E-Retail产品的Web服务生成的SOAP响应的有效负载。
答案 0 :(得分:3)
由你来解码它们。 \
字符不代表XML中的转义序列(即使它确实如此,CDATA也几乎肯定会设计为使字符文字也是如此)。