【问题标题】:tinyXML lib cannot read ‘&’ properlytinyXML lib 无法正确读取“&”
【发布时间】:2012-02-20 21:28:29
【问题描述】:

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

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

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

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

所有&amp;amp; 都不见了!

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

有人知道为什么&amp;amp; 这个字符如此SPECIAL 而TinyXML 就是无法读取吗?连一个独立的&amp;amp;都会被解雇?

【问题讨论】:

  • &amp;amp; 在 XML 中被编码为 &amp;amp;XML Basics
  • 换句话说,你的前提是错误的。您没有 XML 文件,您有一个非 XML 文件。找出是谁制作的,并告诉他们修复它。

标签: c++ xml tinyxml


【解决方案1】:

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

&amp;

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

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

【讨论】:

    【解决方案2】:

    这不是格式良好的 XML。如果你想要一个&amp;amp; 字符,你需要输入&amp;amp;

    【讨论】:

      【解决方案3】:

      xml中,&amp;amp;表示为&amp;amp;

      【讨论】:

        猜你喜欢
        • 2020-01-03
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 2012-04-11
        • 2019-05-22
        • 2019-11-13
        • 1970-01-01
        相关资源
        最近更新 更多