我正在使用 PHP DOM Xpath 来读取XML文件。在某些情况下,标签未正确关闭,如下所示
<data>
<name> value </name>
<address
我有以下代码检查XML是否有效
$doc = new DOMDocument();
if(!$doc->load(test.xml))
{
foreach (libxml_get_errors() as $error)
{
print_r($error);
}
libxml_clear_errors();
}
else
{
$valid_xml = 'y';
}
if($valid_xml=='y')
// then process XML
else
// skip and take next file
但是如果(!$ doc-&gt; load(test.xml))
,我会在行下面出现错误Message: DOMDocument::load(): Couldn't find end of Start Tag AdjustmentsToReconcile
Message: DOMDocument::load(): Premature end of data in tag
答案 0 :(得分:2)
你快到了。尝试添加命令libxml_use_internal_errors(true);之前告诉PHP不要抛出错误,而是缓存它们,让你在代码执行时进行迭代。
答案 1 :(得分:1)
这应该对你有帮助:
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$valid_xml = true;
if(!$doc->load(test.xml))
{
$valid_xml = (count(libxml_get_errors()) === 0);
libxml_clear_errors();
}
if($valid_xml)
// then process XML
else
// skip and take next file
libxml_use_internal_errors是关键。