Я пытаюсь изменить атрибут узла, если узел существует, или создать его, если не в файле XML, используя Xpath.XML-файл выглядит так:
<krpano>
<hotspot name="hs1" ath="0" atv="0"/>
<hotspot name="hs2" ath="0" atv="0"/>
</krpano>
и вот мой php-код:
<?php
$str_json = file_get_contents('php://input');
$json_data = json_decode($str_json);
$file = 'myxmlfile.xml';
$xml = simplexml_load_file($file);
$krpano = $xml->xpath("//krpano");
$hotspot = $xml->xpath('//hotspot[@name="'.$json_data->name.'"]');
if ($hotspot){
$xml->xpath('//hotspot[@name="'.$json_data->name.'"]/@ath->'.$json_data->xpos.'');
$xml->xpath('//hotspot[@name="'.$json_data->name.'"]/@atv->'.$json_data->ypos.'');
}else{
$newhs = $krpano[0]->addChild('hotspot');
$newhs->addAttribute('name', $json_data->name);
$newhs->addAttribute('ath', $json_data->xpos);
$newhs->addAttribute('atv', $json_data->ypos);
}
$xml->asXML($file);
?>
если узел не существует, то он добавляется, нет проблем, но если он существует,значения атрибута не изменены.