根据Xpath属性查找XML节点,然后更新其子节点的值
问题描述:
实现此目的的最佳/最有效的方法? DOM文档? Xpath的?两者的混合?根据Xpath属性查找XML节点,然后更新其子节点的值
<currencies>
<currency id="USD">
<title>United States Dollar</title>
<loc>American Samoa, British Indian Ocean Territory, Caribbean Netherlands, Ecuador, El Salvador, Guam, Haiti, Marshall Islands, Micronesia, Northern Mariana Islands, Palau, Panama, Puerto Rico, Timor-Leste, Turks and Caicos Islands, United States, U.S. Virgin Islands, Barbados (as well as Barbados Dollar), Bermuda (as well as Bermudian Dollar), Zimbabwe</loc>
<rate>1.2723</rate>
<timestamp>1325962378</timestamp>
</currency>
</currencies>
我需要根据属性“ID”我已经像这样做访问节点货币:
$xml->xpath('//currency[id="'.$currId.'"]');
我现在该如何进入所谓的“率”的子节点和在保存文件之前编辑它的值?
答
您的XPath几乎是正确的;你只是错过了一个@
符号。以下是与SimpleXML一起使用的解决方案:
$nodes = $xml->xpath('//currency[@id="'.$currId.'"]'); // returns an array
$nodes[0]->rate = $new_rate; // set the first element's rate to the rate stored
// in $new_rate
$xml->asXML($filename); // save the XML to the file $filename