我必须阅读大型(约200MB)XML文件,我使用xmlreader和PHP。节点URL中包含未转义的&符号。解析总是停在第一个网址NODE上。我正在使用与XML文件的xml标记中指定的编码相同的Windows-1250编码。
我收到错误:parser error : EntityRef: expecting ';' in
是否可以用&解析XML?在NODE的价值?
感谢您提供任何提示,如果需要,我可以共享代码。
答案 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 > than the other object</object>
其他实体包括:<
和&
。