XML CDATA块中\ xNN转义的语义是什么?

时间:2014-10-15 15:05:34

标签: xml escaping cdata

我必须处理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响应的有效负载。

1 个答案:

答案 0 :(得分:3)

由你来解码它们。 \字符不代表XML中的转义序列(即使它确实如此,CDATA也几乎肯定会设计为使字符文字也是如此)。