我有一个XML文件,其中包含以下几行:
<rule pat="&&&&&&&&&&&&&&&(?<B>B) ?(?<AND>&) ?(?<E>E)">
Run Code Online (Sandbox Code Playgroud)
我在C++中使用TinyXML lib来解析这个XML文件,但是当我尝试获得这些行的'pat'属性时,TinyXML就会忽略任何出现的字符&.也就是说,TinyXML读取的结果变成了:
(?<B>B) ?(?<AND>) ?(?<E>E)
Run Code Online (Sandbox Code Playgroud)
全都&失踪了!
这个char是我的正则表达式模式的一部分,所以这将导致我的程序中的进一步错误.
有谁知道为什么这个角色&如此特别而且TinyXML无法阅读?即使是一个独立的人&也会被解雇?
那是因为那不是一个有效的 XML文件.你不能只将&字符粘贴在XML中的任何位置.你必须用实体来逃避它:
&
Run Code Online (Sandbox Code Playgroud)
TinyXML只会读取有效的XML文件(或者至少是大多数有效的文件).
同样,你需要躲避<和>人物也与<和>.