Php检索XML元素并在服务器上编辑文件

时间:2015-08-21 10:55:11

标签: php xml xpath

我已经搜索并尝试了一些我在这里找到的例子和答案,但我认为我的要求非常具体,到目前为止我还没有找到对我有用的答案...住宿许多答案一起也没有用!

目标 - 更新包含特定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文件中删除。工作解决方案。

感谢所有贡献, 尼克

0 个答案:

没有答案