我是xml的新手,我不知道如何为 code 节点设置 rate 属性。由于某种原因,它将属性设置为 currency 节点。
<?
@date_default_timezone_set("GMT");
if (isset($_POST['Submit']))
{
$xml=new DomDocument("1.0","UTF-8");
$xml->formatOutput=true;
$xml->preserveWhiteSpace=false;
$xml->load('rates.xml');
$curcode = $_POST['currency-code'];
$newrate = $_POST['rate'];
$change = new DOMXpath($xml);
$update = $change->query("//*[code = '$curcode']");
$update->item(0)->setAttribute("rate", $newrate);
$xml->save('rates.xml');
}
?>
这是xml:
<currencies>
<currency>
<code rate="18.543343372942">ZAR</code>
<cname>Rand</cname>
<cntry>Lesotho, Namibia, South Africa</cntry>
</currency>
<currency>
<code rate="123">test</code>
<cname>ewwwwwww</cname>
<cntry>rew</cntry>
</currency>
<currency rate="432432434332432">
<code rate="1234">testnew</code>
<cname>nene</cname>
<cntry>fnnfr</cntry>
</currency>
</currencies>
如您所见,在最后一个 currency 节点上,正在更新 currency Rate ,而不是 code rate 。>
感谢您的帮助。
答案 0 :(得分:1)
您的XPath查询返回元素<currency>
。
因为//*[code = '$curcode']
选择所有具有code
元素且值为$curcode
的元素。
因此,您只需要选择code
元素。像这样:
$update = $change->query("//*[code = '$curcode']/code");
或
$update = $change->query("//code[text() = '$curcode']");