Подскажите,
Вот такая ошибка вылезает при удалении ветки из ХМЛ...
Цитата:
Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in /home/www/docs/test1/change-xml.php:96 Stack trace: #0 /home/www/docs/test1/change-xml.php(96): DOMNode->removeChild(Object(DOMElement)) #1 {main} thrown in /home/www/docs/test1/change-xml.php on line 96
Код:
Цитата:
if ($act=='del') // delete
{
$doc->load('test.xml');
$xpath = new DOMXPath($doc);
$query = "//cat[@id='".$_POST['id']."']/descendant-or-self::*";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
$arr[]=$entry->getAttribute('id');
}
foreach ($arr as $node) {
echo $node.'
';
}
$entry=$entries->item(0);
$child = $doc->documentElement;
$child->removeChild($entry);
$doc->save('test.xml');
}
2 дня назад код работал!!! видимо это связано с изменением файла ХМЛ...
Цитата:
С чем это связано? и как предотвратить появление этой ошибки?
[решено] Fatal error: Uncaught exception 'DOMException'
-
bruder
Re: [решено] Fatal error: Uncaught exception 'DOMException'
привет. Я с xpath никогда не работал, однако все новое для меня интересно. Я сразу заметил что находятся нужные элементы правильно, главное удалить правильно. Покопавшись немного сотворил следующее:
Код:
ты правильно нашел ноду а удалить ее надо к предку обращаться и убить саму себя
Код:
Код: Выделить всё
//-------------Переделал твой пост на мой get так что внимательней
$act = $_GET["act"];
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
// source
$doc->Load('test.xml');
if ($act=='del') // delete
{
$doc->load('test.xml');
$xpath = new DOMXPath($doc);
//-------------тут маленько исправил
$query = "//cat[@id=".$_GET['id']."]";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo "***-";
echo $entry->getAttribute('id');
echo "+***";
if($entry->getAttribute('id')==$_GET['id'])
//----------------вот это решение
$entry->parentNode->removeChild($entry);
}
$doc->save('test2.xml');
}ты правильно нашел ноду а удалить ее надо к предку обращаться и убить саму себя

-
rus-4-ever
Re: [решено] Fatal error: Uncaught exception 'DOMException'
Спасибо!!!
Ошибка как раз была в том что я использовал
Цитата:
$entry=$entries->item(0);
$child = $doc->documentElement;
$child->removeChild($entry);
А надо
Цитата:
$entry=$entries->item(0);
$child = $entry->parentNode;
$child->removeChild($entry);
Ошибка как раз была в том что я использовал
Цитата:
$entry=$entries->item(0);
$child = $doc->documentElement;
$child->removeChild($entry);
А надо
Цитата:
$entry=$entries->item(0);
$child = $entry->parentNode;
$child->removeChild($entry);