IDE:Embarcadero XE5 C++构建器。XML从UnicodeString创建CData节点时出现无效字符
我试图转储UnicodeStrings在XML CData部分。
这样的字符串的小摘录:
u"‰PNG\r\n\x1A\n\0\0\0\rIHDR\0\0\0õ\0\0\02\b\x06\0\0\0„\\i\0\0\0\x01sRGB\0®Î\x1Cé\0\0\0\x04gAMA\0\0±\vüa\x05\0\0\0\tpHYs\0\0\x0EÃ\0\0\x0EÃ\x01Ço¨d\0\0\v¼IDATxÚíœypUÕ\x19ÀO\x06…°¤\x04D$ˆ²\b1š\b\[email protected]"
我知道一个XML文档可以包含非ASCII字符,我想到了一个XML CDATA节不被XML解析器解析的内容(除了的结尾部分指示符“[[>”,它不存在于我的数据中,请检查它)。
当创建(写)CDATA节,我仍然得到错误“无效字符在文本内容创建节点时才被发现。”
代码示例:
_di_IXMLDocument pXMLDocument = NewXMLDocument("1.0");
// I've played around with the document encoding with no success, guessing it's only applicable while reading the document.
// pXMLDocument->SetEncoding(L"iso-8859-1");
String myString; // Unicode, contains my data string.
// 1st param of CreateNode method is of type UnicodeString.
di_IXMLNode pCDataNode = pXMLDocument->CreateNode(myString, ntCData);
为什么这个失败有什么想法?编码问题?
看来这个问题实际上可能是字符串的内容。由于数据的“随机”性质,字符串包含字符文字(转义字符)的加载......并且它们错误地(根据我的要求)被解释为这样。导致问题。因此,在创建CData节点之前,需要为转义字符分析数据字符串。 – HvS