php - XML将属性添加到错误的节点
问题描述
我是 xml 新手,我不知道如何为代码节点设置rate属性。由于某种原因,它将属性设置为货币节点。
<?
@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>
如您所见,在最后一个货币节点上,正在更新货币汇率而不是代码汇率。
任何帮助表示赞赏。
解决方案
您的 XPath 查询返回 element <currency>
。
因为//*[code = '$curcode']
选择code
具有值为 的元素的所有元素$curcode
。
所以你只需要选择code
元素。像这样:
$update = $change->query("//*[code = '$curcode']/code");
或者
$update = $change->query("//code[text() = '$curcode']");
推荐阅读
- rsa - DKIM 配置似乎还可以,但在测试时失败
- python - 在迷宫中创建 Sprite 和列表(不是 sprite)之间的碰撞
- javascript - 组件中的 ref 问题 (Vue)
- java - jmeter:计数器无法在同一线程中重置
- python - 如何在 Django、Python、Keycloak 中重定向到重定向 url
- java - ZGC 安全点暂停
- android - 在 Google Play 控制台中获取 App Bundle 错误
- c# - 我可以在空数组列表索引上替换或放置一个新字符串吗
- asp.net - 如何在 asp.net 中将图像从数据库显示到 GridView
- css - CSS:图像出现在 div 边框之外