如何解析& #DDDDD;& #DDDDD; (XML Image)与XML Parser

时间:2016-02-19 02:50:54

标签: xml parsing unicode libxml2

我面对一个奇怪的问题,我将XML数据作为INPUT获取,例如

<D\DATA>
<\DATA_CONTENT="&lt;p&gt;&#55357;&#56842;&lt;/p&gt;&lt;p&gt;&#55357;&#56832;&lt;/p&gt;&lt;p&gt;&#55357;&#56865;&lt;/p&gt;"/>
<\/DATA>

并尝试使用libxml2解析

xmlReaderForMemory(inputData.c_str(),inputData.length(),NULL,NULL,NULL)

问题是xml解析器可以t process the parsing because of "&" image string in sample input is "&#55357;&#56865;' is UTF-8 encoded UNICODE or HTML data so data is correct, but problem is "&" is not possible in XML Data. it shoulde be changed as "&amp;" but i can改变输入数据。

数据在Android系统中使用TransformerFactory()并在JAVA上通过DOM解析

但我需要用C / C ++解析它。所以我试着用libxml2解析xml数据,但是......没办法解决这个问题..

请帮助我,并提前致谢

1 个答案:

答案 0 :(得分:1)

&#55357;(U + D83D)和&#56842;(U + DE0A)是Unicode surrogatesnot allowed in XML的数字字符引用。因此, libxml2 在拒绝此类字符引用时会做正确的事。

您应首先通过组合代理来更改生成此无效XML的代码部分。例如,代理对D83D DE0A是代码点U+1F60A: SMILING FACE WITH SMILING EYES的UTF-16编码。您的XML生成器应输出&#x1F60A;或十进制&#128522;