PHP DOMDocument получение атрибута тега
Привет у меня есть ответ api в формате xml с рядом элементов, таких как это:
<item>
<title>blah balh</title>
<pubDate>Tue, 20 Oct 2009 </pubDate>
<media:file date="today" data="example text string"/>
</item>
Я хочу использовать DOMDocument для получения атрибута " data "из тега"media:file". Моя попытка ниже не работает:
$xmldoc = new DOMDocument();
$xmldoc->load('api response address');
foreach ($xmldoc->getElementsByTagName('item') as $feeditem) {
$nodes = $feeditem->getElementsByTagName('media:file');
$linkthumb = $nodes->item(0)->getAttribute('data');
}
что я делаю не так? Пожалуйста помочь.
EDIT: я не могу оставлять комментарии по какой-то причине. Я получаю ошибку
Call to a member function getAttribute() on a non-object
когда я запускаю мой код. Я также пробовал
$nodes = $feeditem->getElementsByTagNameNS('uri','file');
$linkthumb = $nodes->item(0)->getAttribute('data');
где uri-это uri что касается пространства имен носителей (NS), но снова та же проблема.
обратите внимание, что медиа-элемент имеет форму не я думаю, что это часть проблемы, так как у меня обычно нет проблем с разбором для attibutes.
2 ответов
приведенный пример не должен генерировать ошибку. Я протестировал его, и $linkthumb содержал строку "пример текстовой строки", как и ожидалось
обеспечить СМИ пространство имен определяется в возвращаемом XML, иначе DOMDocument выдаст ошибку.
Если вы получаете конкретную ошибку, пожалуйста, отредактируйте свой пост, чтобы включить его
изменить:
попробуйте следующий код:
$xmldoc = new DOMDocument();
$xmldoc->load('api response address');
foreach ($xmldoc->getElementsByTagName('item') as $feeditem) {
$nodes = $feeditem->getElementsByTagName('file');
$linkthumb = $nodes->item(0)->getAttribute('data');
echo $linkthumb;
}
вы также можете посмотреть SimpleXML и XPath-выражения поскольку это делает чтение XML намного проще, чем DOMDocument.