2017-06-08 12 views
0

PHP DOM Xpathを使用してXMLファイルを読み取ります。いくつかのケースではタグが適切にXMLがPHPで不完全な終了タグを含む無効な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 

有効ですが、私はライン場合(!$ドキュメントでエラーの下に取得していた場合

<data> 
    <name> value </name> 
    <address 

の下に、私はチェックにコードを次しているように閉じられていません - > load(test.xml))

Message: DOMDocument::load(): Couldn't find end of Start Tag AdjustmentsToReconcile 

Message: DOMDocument::load(): Premature end of data in tag 

答えて

2

あなたはほぼそこにいました。コマンドlibxml_use_internal_errors(true)を追加してみてください。 PHPがエラーをスローしないように指示するだけでなく、コードが実行している間に反復処理を行うためにそれらをキャッシュする必要があります。

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が鍵となります。

関連する問題