2017-01-18 63 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」屬性。你可以看看URL代碼中的xml文件。

對不起,我是一個新手,我也有問題,但我沒有得到任何我明白的。換句話說,根據我的代碼很簡單,所有的答案對我來說都顯得太複雜了。

感謝您的幫助。

回答

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