[обновление из-за неоднозначного вопроса] спасибо за указание на это @hakrePHP удалить XML-узел с DOMDocument
У меня есть проблема в том, что с теми, сценарий у меня есть:
- или не может удалить XML-узел, я хочу
- или удаляет узел, но он не сохранить его файл
я есть THI s XML документ:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<name>Chelsea</name>
<Snippet>London</Snippet>
<Point>
<coordinates>-0.2, 51.2,0.000000</coordinates>
</Point>
<id>1</id>
</Placemark>
<Placemark>
<name>World</name>
<Snippet>Willingdon </Snippet>
<Point>
<coordinates>-0.2,50.2,0.000000</coordinates>
</Point>
<id>2</id>
</Placemark>
</Document>
</kml>
и с этим Javascript я называю delete.php:
function send2del(d){
$.ajax({
url : 'delete.php',
type : 'POST',
data : { what : $(d).data('id') },
success : function(){
$(d).closest('tr').fadeOut('slow');
}
});
return false;
};
и я пытаюсь удалить метку, используя ID, вот мой delete.php:
<?php
if (isset($_POST['what'])) {
$id = $_POST['what'];
$doc = new DOMDocument;
$doc->load('placemarks.xml');
$shops = $doc->getElementsByTagName('Placemark');
foreach ($shops as $shop) {
$ids = $shop->getElementsByTagName('id');
if ($ids->item(0)->nodeValue == $id) {
$shop->parentNode->removeChild($shop);
}
}
echo $doc->saveXML();
}
?>
Но это не сработает. Я пробовал нам simpleXML, но без успеха. Можете ли вы дать мне несколько рекомендаций по этой проблеме? Или, если вы можете мне помочь с решением simpleXML, я был бы очень благодарен.
Вам нужно отлаживать код. Например. это значение, переданное скрипту PHP и доступное там в том формате, который вы ожидаете от него? Это лучше всего сделать с помощью отладчика шага, такого как xdebug btw., Вы можете заглянуть внутрь программы во время ее запуска и пройти шаг за шагом, глядя на все переменные и как они меняются и т. Д. – hakre
кажется, что он получает параметр что мне нужно, 'foreach ($ stores as $ shop) { $ ids = $ shop-> getElementsByTagName ('id'); if ($ ids-> item (0) -> nodeValue == $ id) { echo "i found it:". $ Shop-> getElementsByTagName ('name') -> item (0) -> nodeValue; } } 'дает мне результат, которого я ожидаю. просто я не знаю, как hot удалить узел метки и сохранить его. – gerpaick
Вам нужно использовать метод 'save', а не' saveXML'. См. Http://php.net/domdocument.save. И кстати, это было совершенно непонятно мне из вашего вопроса, у меня создалось впечатление, что элемент не был удален из документа, но вы просто обеспокоены сохранением, не так ли? – hakre