tinyXML lib无法正确读取'&'

时间:2012-01-27 22:34:37

标签: c++ xml tinyxml

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

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

我在C ++中使用TinyXML lib来解析这个XML文件,但是当我尝试获取这些行的'pat'属性时,TinyXML就会忽略任何出现的字符&。也就是说,TinyXML读取的结果变为:

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

所有&缺失!

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

有没有人知道为什么这个角色&如此 SPECIAL 而且TinyXML无法读取?即使是独立的&也会被解雇?

3 个答案:

答案 0 :(得分:7)

那是因为那不是有效的 XML文件。您不能只将&字符粘贴到XML中的任何位置。你必须通过实体来逃避它:

&amp;

TinyXML只会读取有效的XML文件(或者至少是有效的XML文件)。

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

答案 1 :(得分:2)

这不是格式良好的XML。如果您需要&字符,则需要放置&amp;

答案 2 :(得分:1)

xml中,&表示为&amp;