У меня постоянно возникала проблема с синтаксическим анализом XML с PHP и на самом деле не была найдена «правильный путь» или, по крайней мере, стандартизованный способ анализа XML-файлов.Анализ XML с использованием PHP
Во-первых, я пытаюсь разобрать этот:
<item>
<title>2884400</title>
<description><![CDATA[ ><img width="126" alt="" src="http://userserve-ak.last.fm/serve/126/27319921.jpg" /> ]]></description>
<link>http://www.last.fm/music/+noredirect/Beatles/+images/27319921</link>
<author>anne710</author>
<pubDate>Tue, 21 Apr 2009 16:12:31 +0000</pubDate>
<guid>http://www.last.fm/music/+noredirect/Beatles/+images/27319921</guid>
<media:content url="http://userserve-ak.last.fm/serve/_/27319921/Beatles+2884400.jpg" fileSize="13065" type="image/jpeg" expression="full" width="126" height="126" />
<media:thumbnail url="http://userserve-ak.last.fm/serve/126/27319921.jpg" type="image/jpeg" width="126" height="126" />
</item>
Я использую этот код:
$doc = new DOMDocument();
$doc->load('http://ws.audioscrobbler.com/2.0/artist/beatles/images.rss');
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
);
array_push($arrFeeds, $itemRSS);
}
Теперь я хочу, чтобы получить «СМИ: содержание» и «СМИ: миниатюру "атрибуты url, как бы я это сделал? Теперь я думаю, что я должен использовать DOMElement :: getAttribute, но мне не удалось заставить его работать:/Может кто-нибудь пролить свет на это, а также сообщить мне, если это хороший способ разобрать XML?
С уважением, Шади
весь этот вопрос/нить очень плохо. Проблема заключается в отсутствии понимания пространств имен. Я предлагаю всем, кто читает это, узнать о пространствах имен XML. Люди упомянули это ниже. Проблема связана с медиа: контент означает тег «контент», который принадлежит пространству имен «media», а не пространство имен по умолчанию (к чему вы обращаетесь). – Jotham