2017-01-18 3 views
1

SimpleXMLの属性で値を取得:私は私のWebページ上のXMLテーブルからいくつかの値を表示するには、このコードを持っている

<?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;"; 
?> 

私は私のWebページ上のいくつかの特定の値を表示するには、要素番号126を使用しています。これは正常に動作しますが、問題はxmlファイルの行の順序が常に同じではないことです。だから私は特定の属性によって価値を得たいと思っています。あなたは上のコードブロックでurlのxmlファイルを見ることができます。

申し訳ありません私は初心者ですが、私も質問をしていますが、私は理解できるものは得ていません。言い換えれば、私のコードによれば、すべての答えが私にとっては複雑すぎるように見えますが、それは非常に簡単です。

ご協力ありがとうございます。

答えて

0

XPathを使用すると、特定の値を持つ属性別のノードを取得できます。 SimpleXMLElement::xpathメソッドを使用して、XMLファイルをSQLの代わりにXPathでデータベースに照会することができます。

//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

関連する問題