0

使用する必要がある XML ファイル (ランダム リソース) があります。PHP DOM Document を使用してこのドキュメントを処理し、 DOMXPath を使用してオブジェクトをクエリしています。ただし、XPath クエリはどのような種類のデータも返しません (resultset->length = 0)。クエリは正しく、その構文については心配していません。DOMDOcument->getElementsByTagName("tag") も試してみましたが、これも null の結果を返します。

上記のコンテキストで、DOMDocument を呼び出したときに DOMDocument がロードできたかどうかを確認するにはどうすればよいですか?

DOMDocument->Load('file.xml')


[also tried 

$xmlFile = file_get_contents('file.xml')
DOMDocument->loadXML($xmlFile)]

XML ファイルに障害がある場合、おそらく DOMDocument をまったくクエリできないと思いますか? とにかく、a) DOMDocument->Load/loadXML メソッドを呼び出したときにドキュメントがまったく読み込まれたかどうかを確認する方法はありますか b) 外部リソースを使用して XML ファイルを検証します (私が知っているのは w3 の学校のバリデーターだけです) c) もしXML ファイルが正しくありません。とにかく修正できますか?

時間を割いてこれを読んでくれたすべての人に感謝します。

ベスト、パリジャット・カリア

4

1 に答える 1

0

何かをする前にこれをオンにしてみてください:

libxml_use_internal_errors(true);

次に、XMLをロードした後、以下を使用してエラーを探します。

$errors = libxml_get_errors();

繰り返すことができます$errors(これはlibXMLErrorオブジェクトの配列です)。

例えば:

libxml_use_internal_errors(true);

try
{
    $doc = new DOMDocument();
    $doc->load("somebadxmlfile.xml");
}
catch (Exception $e)
{
    $errors = libxml_get_errors();

    foreach ($errors as $error)
    {
        echo $error->message . " [ Line: " . $error->line . " | Column: " . $error->column . " | Level: " . $error->level . " | File: " . $error->file . " ]";
    }
}
于 2012-06-08T13:41:41.770 に答える