2017-01-18 3 views
1

У меня есть этот код, чтобы показать некоторые значения из XML-таблицы на веб-странице:получить значения атрибутом SimpleXML

<?php 
$xml=simplexml_load_file("http://www.arso.gov.si/xml/vode/hidro_podatki_zadnji.xml") or die("Error: Cannot create object"); 
echo "Merilno mesto: ".$xml->postaja[126]->merilno_mesto."<br>"; 
echo "Datum/ura: ".$xml->postaja[126]->datum."<br>"; 
echo "Vodostaj: ".$xml->postaja[126]->vodostaj." cm"."<br>"; 
echo "Pretok: ".$xml->postaja[126]->pretok." m<sup>3</sup>/s"; 
echo " - ".$xml->postaja[126]->pretok_znacilni."<br>"; 
echo "Temperatura vode: ".$xml->postaja[126]->temp_vode."&#x2103;"; 
?> 

Я использую элемент номер 126, чтобы отобразить некоторые конкретные значения на веб-странице. Это работает нормально, но проблема в том, что порядок строк в XML-файле не всегда одинаковый. Поэтому я хочу получить значения по определенному атрибуту, лучшим из которых я считаю атрибут «sifra». Вы можете посмотреть файл xml в url в верхнем блоке кода.

И жаль, что я новичок, и у меня также есть вопросы, но у меня нет ничего, что я понимаю. Другими словами, все ответы кажутся слишком сложными для меня в соответствии с моим кодом, который довольно прост.

Спасибо за вашу помощь.

ответ

0

Вы можете использовать XPath, чтобы получить узел по атрибуту с определенным значением. Вы можете использовать метод SimpleXMLElement::xpath для запроса XML-файла, такого как база данных с XPath (вместо SQL).

//load the xml file. 
$xml=simplexml_load_file("http://www.arso.gov.si/xml/vode/hidro_podatki_zadnji.xml") or die("Error: Cannot create object"); 

//select a node with name "postaja" on parent with name "arsopodatki" 
//where attribute "sifra" on node "postaja" has the value "1165". 
$xmlNodes = $xml->xpath('/arsopodatki/postaja[@sifra="1165"]'); 

//is there a node? 
if (count($xmlNodes) < 1) { 
    die('Node not found!'); //No 
} else { 
    $xmlNode = $xmlNodes[0]; //Yes 
    echo "Merilno mesto: ".$xmlNode->merilno_mesto."<br>"; 
    echo "Datum/ura: ".$xmlNode->datum."<br>"; 
    echo "Vodostaj: ".$xmlNode->vodostaj." cm"."<br>"; 
    echo "Pretok: ".$xmlNode->pretok." m<sup>3</sup>/s"; 
    echo " - ".$xmlNode->pretok_znacilni."<br>"; 
    echo "Temperatura vode: ".$xmlNode->temp_vode."&#x2103;"; 
} 
+0

Отлично работает. Благодаря! – marko28