我已经搜索并尝试了一些我在这里找到的例子和答案,但我认为我的要求非常具体,到目前为止我还没有找到对我有用的答案...住宿许多答案一起也没有用!
目标 - 更新包含特定hosplist_divert
标记的同一元素的name
值。
XML文件托管在php页面的sperate文件夹中,在这种情况下是/data/hospitals2.xml
我的XML就像这样:
<Document>
<Placemark>
<name>UHSM Wythenshawe</name>
<hosplist_divert>1</hosplist_divert>
</Placemark>
</Document>
文件中大约有50个Placemark
条目。
到目前为止,我只能从文件中返回所有医院名称,
// Create the SXE object
// You can read from file using the simplexml_load_file function
$url = "http://www.patientpathfinder.co.uk/user/nwasdos/data/hospitals2.xml";
$sxe = new SimpleXMLElement($url, NULL, TRUE);
$sxe->registerXPathNamespace('hospital','http://earth.google.com/kml/2.2');
// Fetch the right HOSPITAL using XPATH
// hospital name stored in Document/Placemark/name
// dovert status stored in Document/Placemark/hosplist_divert
//trying to find above values for UHSM Wythenshawe
$result=$sxe->xpath('//hospital:name[.="UHSM Wythenshawe"]/parent::*');
foreach ($result as $hospital)
{
echo $hospital . "<br>";
}
// Update the values you want
//$target_hosp[0]->hosplist_divert = 'ON DIVERT';
// Store the updated values in the $xml variable
//$xml = $sxe->asXML();
// Print the updated XML
//echo $xml;
}
我花了大约半天的时间才意识到我需要定义命名空间,但是没有时间理解为什么命名空间是必需的,并且很乐意将其从XML文件中删除。工作解决方案。
感谢所有贡献, 尼克