我有这段代码在我的网页上显示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."℃";
?>
我使用元素编号126在我的网页上显示一些特定值。这工作正常,但问题是xml文件中的行顺序并不总是相同。因此,我希望通过特定属性获取值,我认为最好的属性是&#34; sifra&#34;。您可以在上面的代码块中查看url中的xml文件。
抱歉,我是一个新手,我也搜索了问题,但我还没有得到任何我理解的东西。换句话说,根据我的代码,所有答案对我来说都太复杂了,这很简单。
感谢您的帮助。
答案 0 :(得分:0)
您可以使用XPath按属性获取具有特定值的节点。您可以使用方法SimpleXMLElement::xpath
像使用XPath(而不是SQL)的数据库一样查询XML文件。
//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."℃";
}