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" />
War es hilfreich?

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:

Und wenn Sie etwas mit Namespaces benötigen, gibt es entsprechende Methoden mit der Endung NS.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top