如何使用未转义的&符解析XML

时间:2013-02-28 17:57:10

标签: php xml xmlreader

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

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

是否可以用&解析XML?在NODE的价值?

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

2 个答案:

答案 0 :(得分:1)

  

是否可以用&解析XML?在NODE的价值?

不,这意味着文件根本不是格式良好的XML,因此并不真正有资格作为XML文件,没有XML文件解析器可以处理,否则它不会是XML解析器。

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

答案 1 :(得分:1)

@hakre是对的。为了解析任何XML,您必须首先预处理数据。 这样做的原因是,在XML中,"&"仅用于实体。例如,如果您使用的是XML,则打开'<'并关闭'>'非常重要,以下节点对解析器没有任何意义:

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

解析器认为&#34;&gt;&#34;在文本的中间是试图在某处关闭一个标签,但是没有匹配的开始标签,所以它会混淆。为此,您需要输入以下内容:

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

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