2017-01-18 2 views
1

SimpleXML을 속성으로 값을 얻을 :내가 내 웹 페이지에 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;"; 
?> 

내 웹 페이지에 일부 특정 값을 표시 할 요소 번호 (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