Я новичок в XML и не могу понять, как установить темп атрибут для код узел. По какой-то причине он устанавливает атрибут валюта узел.
<?
@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 возвращает элемент <currency>
,
Так как //*[code = '$curcode']
выбирает все элементы, которые имеют code
элемент со значением $curcode
,
Так что все, что вам нужно, это просто выбрать code
элемент. Как это:
$update = $change->query("//*[code = '$curcode']/code");
или же
$update = $change->query("//code[text() = '$curcode']");
Других решений пока нет …