2009-06-19 24 views
2

自分のサイトの管理者がXMLをテキストエリアに追加してデータベーステーブルに保存することができるWebフォームを構築していますが、XMLの解析に最適な方法について少し混乱しています。DOMを保持しながらXMLを解析する際に、詳細なエラー情報を取得するにはどうすればよいですか?

PHPスクリプトはXMLを解析する必要があり、解析エラーがあれば、フォームを送信した管理者にエラーメッセージと行/列が返されます。それを解析した後、XPathを使用してノードと属性の存在をいくつかチェックするために、DOMにアクセスする必要があります。

私はxml_create_parser()xml_parse()を使用している場合は、私は私が返された偽の場合は後だ詳細なエラー情報を取得することができます。しかし、私はそれを解析した後、XMLのDOMにアクセスすることはできません。 DOMDocument::loadXML()を私が読んだところから使用すると、解析エラーの例外がスローされず、PHPログに出力されます。

最初にxml_parse()を試してみたら、DOMDocument::loadXML()を実行してください。そのファイルのサイズは10KB未満で、10〜20KBのファイルがほとんどです。誰か良い方法を知っていますか?

答えて

6

あなたはlibxml_use_internal_errorsを有効にしてからのDOMDocument -ifでき::負荷()libxml_get_errors()

<?php 
$xml = '<a> 
    <b>xyz</b> 
    <c> 
</a>'; 

libxml_use_internal_errors(true); 
$doc = new DOMDocument; 
if (!$doc->loadxml($xml)) { 
    $errors = libxml_get_errors(); 
    var_dump($errors); 
}
+0

おかげで、詳細なエラーメッセージを照会failed-。私が検索するたびに、私は自分のエラーハンドラを設定している人を見つけました。エラーの行番号/列番号をそのように取得する方法はありませんでした。 –

関連する問題