Как получить тег «<yweather: condition>» от Yahoo Weather RSS в PHP?

<?php $doc = new DOMDocument(); $doc->load('http://weather.yahooapis.com/forecastrss?p=VEXX0024&u=c'); $channel = $doc->getElementsByTagName("channel"); foreach($channel as $chnl) { $item = $chnl->getElementsByTagName("item"); foreach($item as $itemgotten) { $describe = $itemgotten->getElementsByTagName("description"); $description = $describe->item(0)->nodeValue; echo $description; } } ?> 

И, как вы можете видеть, это простой скрипт, который возвращает содержимое тега из вышеуказанного URL-адреса. Дело в том, что мне не нужен этот контент, мне нужен тот, кто находится внутри тега. Мне нужен код атрибутов, temp , text . Как я могу сделать это просто с моим фактическим кодом? благодаря

Пример содержимого тега:

 <yweather:condition text="Partly Cloudy" code="30" temp="30" date="Fri, 16 Jul 2010 8:30 am AST" /> 

Что-то вроде:

 echo $itemgotten->getElementsByTagNameNS( "http://xml.weather.yahoo.com/ns/rss/1.0","condition")->item(0)-> getAttribute("temp"); 

Ключ в том, что вам нужно использовать getElementsByTagNameNS вместо getElementsByTagName и указать "http://xml.weather.yahoo.com/ns/rss/1.0" как пространство имен.

Вы знаете, что yweather является ярлыком для http://xml.weather.yahoo.com/ns/rss/1.0 потому что XML-файл содержит атрибут xmls :

 <rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> 

Как насчет:

  • DOMElement::getAttribute – возвращает значение атрибута

И если вам нужно получить что-либо с пространствами имен, есть соответствующие методы, заканчивающиеся на NS .