2

私は自分のサイトの管理者がXMLをテキストエリアに追加してデータベーステーブルに保存するために送信できるWebフォームを作成していますが、XMLを解析する最良の方法について少し混乱しています。

PHPスクリプトはXMLを解析する必要があり、解析エラーがある場合は、フォームを送信した管理者に、パーサーが停止したエラーメッセージと行/列を返す必要があります。解析後、DOMにアクセスして、XPathを使用してノードと属性の存在を確認する必要があります。

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

私が最初に試しxml_parse()、それが成功した場合DOMDocument::loadXML()は、ファイルがほとんど10KB未満で、いくつかは10〜20KBであることを考慮して、実行するとパフォーマンスが大幅に低下しますか?誰かがより良い方法を知っていますか?

4

1 に答える 1

6

libxml_use_internal_errorsを有効にしてから、-DOMDocument :: load()が失敗した場合-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);
}
于 2009-06-19T09:02:11.270 に答える