NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Čtení XML 2

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
smoukey
Člen
Avatar
smoukey:21.1.2016 12:52

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.1.2016 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.