XML 将属性添加到错误的节点
XML Adding attribute to the wrong node
我是 xml 的新手,我不知道如何为 code[=27= 设置 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 而不是 码率.
感谢任何帮助。
您的 XPath 查询 returns 元素 <currency>
.
因为 //*[code = '$curcode']
selects 所有具有 code
元素且值为 $curcode
.
的元素
所以你只需要 select code
元素。像这样:
$update = $change->query("//*[code = '$curcode']/code");
或
$update = $change->query("//code[text() = '$curcode']");
我是 xml 的新手,我不知道如何为 code[=27= 设置 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 而不是 码率.
感谢任何帮助。
您的 XPath 查询 returns 元素 <currency>
.
因为 //*[code = '$curcode']
selects 所有具有 code
元素且值为 $curcode
.
所以你只需要 select code
元素。像这样:
$update = $change->query("//*[code = '$curcode']/code");
或
$update = $change->query("//code[text() = '$curcode']");