我正在使用PHP libxml库来处理xml文件。作为此过程的一部分,我设置了libxml_use_internal_errors(true),我从文件加载xml并使用libxml_get_errors()检查是否存在任何xml错误。
这是我的代码:
$filename = $local_dir . $file;
$file_parts = pathinfo($filename);
if ( $file_parts['extension'] != 'xml' ) continue;
$xml_string = file_get_contents($filename);
// check for valid xml
libxml_use_internal_errors(true);
$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadXML( $xml_string );
$xml_errors = libxml_get_errors();
if (!empty($xml_errors) ) {
echo 'There is an error in file: ' . $file . '<br>';
print_r($xml_errors);
libxml_clear_errors();
continue;
}
此代码是处理多个xml文件的循环的一部分,$ filename变量正确设置。
在我的本地Wamp服务器上没有返回任何错误,但是当我在开发服务器上运行时,我收到一些xml文件的错误:
LibXMLError对象(
[level] =&gt; 2
[code] =&gt; 68
[column] =&gt; 202
[message] =&gt; htmlParseEntityRef:没有名字
[file] =&gt;
[line] =&gt; 1
)
任何人都可以解释这个错误的含义吗?
谢谢你 安东尼拉文
答案 0 :(得分:0)
XML中的某个地方是一个裸&
,它是为字符引用的开头保留的。将其更改为&
。
注意:
如果您使用$doc->load($filename)
代替file_get_contents
和loadXML
,您将在错误中获得更完整的诊断信息。