我的.xml文档通常包含错误。我想要解析我的文档,直到错误或尝试自动修复错误。那可能吗?
我试过这个,但它无法正常工作
$xml = simplexml_load_file($url, "SimpleXMLElement", array(LIBXML_NOERROR, LIBXML_ERR_NONE));
if (!$xml) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
答案 0 :(得分:10)
从PHP DOC simplexml_load_file选项应该是int而不是数组
替换
$xml = simplexml_load_file($url, "SimpleXMLElement", array(LIBXML_NOERROR, LIBXML_ERR_NONE));
^------- You are using array
用
$xml = simplexml_load_file($url, "SimpleXMLElement", LIBXML_NOERROR | LIBXML_ERR_NONE);
您可以使用Tidy包修复xml,而不是抑制此错误。
示例 bad.xml
<Family>
<name>Hankre</name>
<adults>2</adults>
<kids > 16 </kids>
<food>
<tag>Nice </tag>
<tag>Food </tag>
<tag />
修复XML
$config = array(
'indent' => true,
'clean' => true,
'input-xml' => true,
'output-xml' => true,
'wrap' => false
);
$tidy = new Tidy();
$xml = $tidy->repairfile($badXML, $config);
echo $xml;
输出
<Family>
<name>Hankre</name>
<adults>2</adults>
<kids>16</kids>
<food>
<tag>Nice</tag>
<tag>Food</tag>
<tag />
</food>
</Family>