0

私は定期的にチェックしているいくつかの XML フィードをデータベースに持っています。データの処理方法:

これらの XML リンクを DB からロードし、simplexml_load_file()I am parsing data をループします。ただし、XML ファイルの形式が正しくないために発生したエラーが原因で、スクリプトが終了することがあります。たとえば、次のようになります。

Warning: simplexml_load_file() [function.simplexml-load-file]: URL_ADDRESS:1: parser error : Invalid XML encoding name in path_to_script on line 98

Warning: simplexml_load_file() [function.simplexml-load-file]: <?xml version="1.0" encoding=""?> in path_to_scriptp on line 98

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in path_to_script on line 98

Warning: Invalid argument supplied for foreach() in path_to_script on line 99

このエラーを処理する方法はありますか? エラーが発生した場合、この XML フィードはスキップされ、スクリプトは次のフィードに進みますか?

4

2 に答える 2

1

もしも Docsはファイルの読み込みに失敗し、 を返します。オプションDocsを使用すると、エラーも報告されません。simplexml_load_filefalseLIBXML_NOERROR

したがって、必要なことは戻り値を確認することだけです。

foreach ($files as $file)
{
    $xml = simplexml_load_file($file, null, LIBXML_NOERROR);

    if ($xml === false) {
        continue;
    }

    ... process $xml ...
}

オンライン デモ: http://codepad.viper-7.com/EXG7VP

于 2013-01-27T15:03:57.080 に答える
1

libxml_use_internal_errors()を使用してすべての XML エラーを抑制し、libxml_get_errors()を使用して後でそれらを反復処理します。

ソース

于 2013-01-25T18:04:24.740 に答える