0

私は、xml ページを解析し、いくつかのデータを選択する必要があるプロジェクトを持っています。domDocument クラスは完璧に思えたので、いくつかの基本的なテストを試して、それが意図したとおりに機能するかどうかを確認しました。

ここに私のコードがあります:

$dom = new domDocument;
$html = file_get_contents('http://wadmag.com/feed.xml');
$previous_value = libxml_use_internal_errors(TRUE);
$dom->loadHTML("$html");
libxml_clear_errors(); //This here is to clear the errors caused by the page not
libxml_use_internal_errors($previous_value); // being proper html

$links = $dom->getElementsByTagName('item');
echo "Found : ".$links->length. " items";   

foreach ($links as $link) {
    echo $link->nodeValue."<br>";
}

問題は、ページをロードすると、「Found: 21 items」というメッセージが表示されることです。これは、getElementsByTagName がリストを返したことを意味しますが、リストの内容を表示しようとすると、nodeValue のように何も表示されません。空でした。

さらに奇妙なことに、getElementsByTagName の「リンク」をタイトルまたは説明に置き換えると、すべてが正常に表示されます。理由を理解できないようですが、私が見ることができる唯一の違いは、適切なhtmlである可能性があるのに対し、そうではないということです。

4

1 に答える 1

0

XML を解析する場合は、$dom->loadXML($response)代わりに使用します$dom->loadHtml($response)

于 2016-10-25T01:40:28.000 に答える