Intereting Posts
Добавить сегмент URI для языка в Codeigniter Можно ли безопасно использовать str_replace в кодированной кодировке UTF-8, если в качестве аргументов заданы только строки с кодировкой UTF-8? Верхняя первая буква и нижняя нижняя Получите широту и долготу всего местоположения, которые находятся в радиусе 10 км от моего текущего местоположения с помощью карты google (с использованием PHP) Попытка загрузить Blob через PHP / MySQL Отправить несколько данных флажка на PHP через jQuery ajax () Могу ли я отображать все файлы cookie, установленные в PHP? что такое уведомление: идентификатор ресурса № 9? поиск в локальной базе данных (sql) с AS3 передача массива с php на javascript Как разрешить определенные теги HTML в поле формы в Symfony 1.2 PDO Небуферизованные запросы PHP / MySQL: вставьте данные в проблему набора символов базы данных Найти ближайшую долготу и широту в массиве? как изменить размер bmp, tiff image с помощью gd-библиотеки? а также упомянуть о imagemagick, который хорош в использовании

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 для получения атрибута «данные» из тега «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.

Приведенный пример не должен генерировать ошибку. Я протестировал его, и $ 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.

С другой стороны,

 $DOMNode -> attributes -> getNamedItem( 'MyAttribute' ) -> value;