我必须阅读大型(大约 200MB)XML 文件,我正在使用 xmlreader 和 PHP。节点 URL 中包含未转义的 & 符号。解析总是在第一个 url 节点上停止。我使用的编码 windows-1250 与 XML 文件的 xml 标记中指定的相同。
我收到错误:parser error : EntityRef: expecting ';' in
是否可以解析带有 & in NODE 值的 XML?
感谢您的任何提示,如果您需要,我可以分享代码。
@hakre 是正确的。为了解析任何 XML,您必须首先预处理数据。原因是在 XML 中,“&”仅用于实体。例如,如果您使用的是 XML,则开头的 '<' 和关闭的 '>' 非常重要,以下节点对解析器没有任何意义:
<object>This object is > than the other object</object>
解析器认为文本中间的“>”试图在某处关闭标签,但没有匹配的开始标签,所以会混淆。为此,您需要键入以下内容:
<object>This object is > than the other object</object>
其他实体包括:<
和&
。
是否可以解析带有 & in NODE 值的 XML?
不,这意味着该文件根本不是格式良好的 XML,因此不能真正成为 XML 文件,并且没有 XML 文件解析器可以处理它,否则它不会是 XML 解析器。
但是,您可以在将数据传递给 XML 解析器之前对其进行预处理并自己解决问题 ( &
-> &
)。