Diskuze: Čtení XML 2

PHP PHP Čtení XML 2 American English version English version

Avatar
smoukey
Člen
Avatar
smoukey:

Ahoj,

nedávno jste mi zde poradili, jak přečíst xml přes php. To pomohlo, ale jen do doby, než jsem dělal podrobnější výpis. Přikládám větší část xml a php kód, kterým čtu.

$reader = new XMLReader();
                        $reader->open("data/sns.xml");
                        while ($reader->read()) {

                                if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute('sensor') == "th0" && $reader->getAttribute('cat') == "temp" && $reader->getAttribute('unit') == "c") {
                                        echo "Venkovní teplota: ".$reader->readString()." °C";
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "th0" && $reader->getAttribute("cat") == "hum" && $reader->getAttribute("unit") == "rel"){
                                        echo "venkovní vlhkost: ".$reader->readString();
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "thb0" && $reader->getAttribute("cat") == "temp" && $reader->getAttribute("unit") == "c"){
                                        echo "Vnitřní teplota: ".$reader->readString()."°C";
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "thb0" && $reader->getAttribute("cat") == "hum" && $reader->getAttribute("unit") == "rel"){
                                        echo "Východ slunce: ".$reader->readString();
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute('sensor') == "lunar" && $reader->getAttribute("cat") == "phase" && $reader->getAttribute("unit") == "cz" ){
                                        echo "Fáze měsíce je: ".$reader->readString();
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "sunrise" && $reader->getAttribute("cat") == "standard" && $reader->getAttribute("unit") == "local"){
                                        echo "Východ slunce: ".$reader->readString();
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "sunset" && $reader->getAttribute("cat") == "standard" && $reader->getAttribute("unit") == "local"){
                                        echo "Západ slunce: ".$reader->readString();
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "thb0" && $reader->getAttribute("cat") == "press" && $reader->getAttribute("unit") == "hpa"){
                                        echo "Tlak: ".$reader->readString()."hpa";
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "thb0" && $reader->getAttribute("cat") == "fc" && $reader->getAttribute("unit") == "textcz"){
                                        echo $reader->readString();
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "wind0" && $reader->getAttribute("cat") == "dir" && $reader->getAttribute("unit") == "deg"){
                                        echo "Směr větru: ".$reader->readString()."°";
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "wind0" && $reader->getAttribute("cat") == "speed" && $reader->getAttribute("unit") == "ms"){
                                        echo "Rychlost větru: ".$reader->readString()."ms";
                                        echo "<br />";
                                }
                                if($reader->nodeType == XMLReader::ELEMENT && $reader->name == "item" && $reader->getAttribute("sensor") == "sunrise" && $reader->getAttribute("cat") == "standard" && $reader->getAttribute("unit") == "local"){
                                        echo "Východ slunce: ".$reader->readString();
                                        echo "<br />";
                                }
                                continue;

                        }

popis: Potřebuji ošetřit to, že pokud se ten reader dostane k řádku v xml

<data timeframe="actual">

Je to tag, v kterém jsou vnořené další tagy, které vypisuji kódem, který jsem přiložil výše.

Tagy vypadají asi takto:

<item sensor="system" cat="version" unit="text">4.9u</item>
   <item sensor="system" cat="version" unit="num">49</item>
   <item sensor="system" cat="build" unit="num">1261</item>
   <item sensor="system" cat="platform" unit="text">SilverStone_DC01</item>
   <item sensor="system" cat="language" unit="text">Czech</item>
   <item sensor="system" cat="temp" unit="unit">c</item>
   <item sensor="system" cat="hum" unit="unit">rel</item>
   <item sensor="system" cat="press" unit="unit">hpa</item>
   <item sensor="system" cat="wind" unit="unit">ms</item>
   <item sensor="system" cat="rain" unit="unit">mm</item>
   <item sensor="date0" cat="date" unit="utc">20160111090606</item>
   <item sensor="date0" cat="date2" unit="utc">11.01.2016 09:06:06</item>
   <item sensor="date0" cat="puredate" unit="utc">11.01.2016</item>
   <item sensor="date0" cat="time" unit="utc">09:06:06</item>
   <item sensor="date0" cat="year" unit="utc">2016</item>
   <item sensor="date0" cat="month" unit="utc">01</item>
   <item sensor="date0" cat="day" unit="utc">11</item>
   <item sensor="date0" cat="dayofweek" unit="utc">1</item>
   <item sensor="date0" cat="hour" unit="utc">09</item>
   <item sensor="date0" cat="min" unit="utc">06</item>

Ale bohužel si nevím rady jak se tím prokousat.

Všem děkuji za rady.

 
Odpovědět 21. ledna 12:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.