[решено] Fatal error: Uncaught exception 'DOMException'

Ответить
Аватара пользователя
rus-4-ever

[решено] Fatal error: Uncaught exception 'DOMException'

Сообщение rus-4-ever »

Подскажите,

Вот такая ошибка вылезает при удалении ветки из ХМЛ...


Цитата:



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 дня назад код работал!!! видимо это связано с изменением файла ХМЛ...




Цитата:























С чем это связано? и как предотвратить появление этой ошибки?
Аватара пользователя
bruder

Re: [решено] Fatal error: Uncaught exception 'DOMException'

Сообщение bruder »

привет. Я с 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'

Сообщение rus-4-ever »

Спасибо!!!

Ошибка как раз была в том что я использовал




Цитата:



$entry=$entries->item(0);



$child = $doc->documentElement;



$child->removeChild($entry);



А надо


Цитата:



$entry=$entries->item(0);



$child = $entry->parentNode;



$child->removeChild($entry);
Ответить

Вернуться в «Вебмастеру»