gpt4 book ai didi

php - 如何使用 SimpleXML 解析忽略错误的 XML

转载 作者:行者123 更新时间:2023-12-05 08:35:00 27 4
gpt4 key购买 nike

我的 .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;
}
}

最佳答案

来自 PHP 文档 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>

关于php - 如何使用 SimpleXML 解析忽略错误的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com