我正在使用 XML 在应用程序之间发送项目信息。其中一条信息是项目描述。所以我有:
<ProjectDescription>Test & spaces around&some & amps!</ProjectDescription>
或者:“测试和空间&一些&s!” <--很好!
然后当我使用 Expat 解析它时,我的数据处理程序一次只获取整个字符串的一部分。“测试”,然后是“&”,然后是“周围的空格”,下一个“&”等等。当我尝试重建原始字符串时,& 周围的所有间距都被删除,因为数据处理程序永远不会到达看他们。然后,当我重新编写 XML 时,我得到:
<ProjectDescription>Test&spaces around&some&amps!</ProjectDescription>
或者:“测试&空间&一些&s!” <--糟糕!
这是现有解决方法的已知问题吗?我可以给 Expat 一些设置来控制其围绕转义符号的行为吗?
我在谷歌上搜索答案的尝试遭遇了惨淡的失败。
编辑:回答评论中的问题:我有自己的处理程序,我在解析器中注册:
parser=XML_ParserCreate(NULL);
XML_SetUserData(parser,&depth);
XML_SetElementHandler(parser,startElement,endElement);
XML_SetCharacterDataHandler(parser,dataHandler);
处理程序声明如下:
static void dataHandler(void *userData,const XML_Char *s,int l)
然后“s”包含元素中的数据。没有任何 & 的东西,它是打开和关闭标签之间的整个字符串,在“带空格的字符串”的情况下。