c++ - tinyXML 库无法正确读取 ‘&’

标签 c++ xml tinyxml

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

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

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

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

所有&都不见了!

这个字符是我的正则表达式模式的一部分,所以这会导致我的程序进一步出错。

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

最佳答案

那是因为那不是有效 XML 文件。你不能只贴一个 & XML 中任何位置的字符。你必须用实体来逃避它:

&amp;

TinyXML 将只读取有效的 XML 文件(或至少大部分有效的文件)。

同样,你需要转义<>字符也是,用&lt;&gt; .

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

相关文章:

xml - xsd :all 后的重复元素

html - 特殊 HTML 构造标签的名称

python - 使用正则表达式获取 XML 父标签

c++ - 需要帮助来理解以下类(class)的目的

c++ - qtreewidgetitem addchild 到已经存在的项目不会产生任何结果

c++ - 当 TinyXML 访问者函数返回 false 时,为什么它停止解析兄弟?

c++ - 使用 TinyXML 获取标签之间的内容

c++ - 以编程方式创建的 tinyxml xml 文件未在 Internet Explorer 中加载

c++ - 成员访问运算符的 lhs 求值与其参数的副作用之间是否存在先序关系?

c++ - 使用 C++ 迭代器引用无效内存位置