1

多くの場合、.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;
        }
    }
4

1 に答える 1

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>
于 2012-10-18T13:45:14.993 に答える