我有一个XML文件,其中包含如下几行:

<rule pat="&&&&&&&&&&&&&&&(?<B>B) ?(?<AND>&) ?(?<E>E)">


我使用C ++中的TinyXML库来解析此XML文件,但是当我尝试获取此类行的'pat'属性时,TinyXML原来只是忽略了字符&的出现。也就是说,TinyXML读取的结果变为:

(?<B>B) ?(?<AND>) ?(?<E>E)


所有&都不见了!

这个char是我的正则表达式模式的一部分,因此这将导致程序中的进一步错误。

有谁知道为什么这个字符&如此特殊,而TinyXML却无法读取?即使是独立的&也将被解雇?

最佳答案

那是因为那不是有效的XML文件。您不能只是将&字符粘贴在XML中的任何位置。您必须使用实体对其进行转义:

&amp;


TinyXML将仅读取有效的XML文件(或至少读取大多数有效文件)。

同样,您也需要使用<>转义&lt;&gt;字符。

关于c++ - tinyXML库无法正确读取“&”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9040961/

10-13 07:06