我有一个XML文件,其中包含以下几行:
<rule pat="&&&&&&&&&&&&&&&(?<B>B) ?(?<AND>&) ?(?<E>E)">
我在C ++中使用TinyXML lib来解析这个XML文件,但是当我尝试获取这些行的'pat'属性时,TinyXML就会忽略任何出现的字符&
。也就是说,TinyXML读取的结果变为:
(?<B>B) ?(?<AND>) ?(?<E>E)
所有&
缺失!
此char是我的正则表达式模式的一部分,因此这将导致我的程序中的进一步错误。
有没有人知道为什么这个角色&
如此 SPECIAL 而且TinyXML无法读取?即使是独立的&
也会被解雇?
答案 0 :(得分:7)
那是因为那不是有效的 XML文件。您不能只将&
字符粘贴到XML中的任何位置。你必须通过实体来逃避它:
&
TinyXML只会读取有效的XML文件(或者至少是有效的XML文件)。
同样,您需要使用<
和>
转义<
和>
个字符。
答案 1 :(得分:2)
这不是格式良好的XML。如果您需要&
字符,则需要放置&
。
答案 2 :(得分:1)
在xml
中,&
表示为&