私は、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である可能性があるのに対し、そうではないということです。