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