【问题标题】:How to parse XML with unescaped ampersand如何使用未转义的 & 符号解析 XML
【发布时间】:2013-02-15 01:08:20
【问题描述】:

我必须阅读大型(约 200MB)XML 文件,我正在使用 xmlreader 和 PHP。节点 URL 中包含未转义的 & 符号。解析总是在第一个 url 节点上停止。我使用的编码 windows-1250 与 XML 文件的 xml 标记中指定的相同。

我收到错误:parser error : EntityRef: expecting ';' in

是否可以解析带有 & in NODE 值的 XML?

感谢您的任何提示,如果您需要,我可以分享代码。

【问题讨论】:

    标签: php xml xmlreader


    【解决方案1】:

    是否可以解析带有 & in NODE 值的 XML?

    不,这意味着该文件根本不是格式正确的 XML,因此不能真正成为 XML 文件,并且没有 XML 文件解析器可以处理,否则它就不是 XML 解析器。

    但是,您可以在将数据传递给 XML 解析器之前对其进行预处理并自行解决问题 (& -> &)。

    【讨论】:

      【解决方案2】:

      @hakre 是正确的。为了解析任何 XML,您必须首先预处理数据。 原因是在 XML 中,“&”仅用于实体。例如,如果您使用 XML,则开头的 '' 非常重要,以下节点对解析器没有任何意义:

      <object>This object is > than the other object</object>
      

      解析器认为文本中间的“>”试图在某处关闭标签,但没有匹配的开始标签,所以会混淆。为此,您需要输入以下内容:

      <object>This object is &gt; than the other object</object>
      

      其他实体包括:&amp;lt;&amp;amp;

      【讨论】:

        猜你喜欢
        • 2013-09-23
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        相关资源
        最近更新 更多