Wie erhalte ich das Tag „<yweather:condition>“ von Yahoo Weather RSS in PHP?
-
16-09-2020 - |
Frage
<?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;
}
}
?>
Und wie Sie sehen, handelt es sich um ein einfaches Skript, das den Inhalt des Tags von der obigen URL zurückgibt.Die Sache ist, dass ich diesen Inhalt nicht brauche, ich brauche denjenigen, der sich im Tag befindet.Ich brauche die Attribute Code, Temp, Text.Wie mache ich das einfach mit meinem eigentlichen Code?Danke
Beispiel des Tag-Inhalts:
<yweather:condition text="Partly Cloudy" code="30" temp="30" date="Fri, 16 Jul 2010 8:30 am AST" />
Lösung
Etwas wie:
echo $itemgotten->getElementsByTagNameNS(
"http://xml.weather.yahoo.com/ns/rss/1.0","condition")->item(0)->
getAttribute("temp");
Der Schlüssel ist, dass Sie es verwenden müssen getElementsByTagNameNS
anstatt getElementsByTagName
und angeben "http://xml.weather.yahoo.com/ns/rss/1.0"
als Namensraum.
Du weisst yweather
ist eine Abkürzung für http://xml.weather.yahoo.com/ns/rss/1.0
weil die XML-Datei eine enthält xmls
Attribut:
<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#">
Andere Tipps
Wie wäre es mit:
DOMElement::getAttribute
– Gibt den Wert des Attributs zurück
Und wenn Sie etwas mit Namespaces benötigen, gibt es entsprechende Methoden mit der Endung NS
.