Исключение xml + php

ну, ребята, этот код забросил это исключение, и я не знаю, почему...

исключение: Неустранимая ошибка: исключить исключение "DOMException" с сообщением "Не найденная ошибка" в C:\AppServ\www\CpVela\publicidades\delete_pub.php: 14 Трассировка стека: # 0 C:\AppServ\www\CpVela\publicidades\delete_pub.php(14): DOMNode-> removeChild (Object (DOMElement)) # 1 {main} брошен в C:\AppServ\www\CpVela\publicidades\delete_pub.php в строке 14

<!--?php
 include "../src/defines.php";
if(!empty($_GET['CDG'])){
 $doc = new DOMDocument; 
 $doc--->load(DIR_PUBLICIDADES);
 $thedocument = $doc->documentElement;
 $list = $thedocument->getElementsByTagName('item');
 echo $list->length;
 $nodeToRemove = NULL;
 foreach ($list as $domElement){
 $attrValue = $domElement->getAttribute('numero');
 if ($attrValue == $_GET['CDG']) {
 $nodeToRemove = $domElement; 
 $thedocument->removeChild($nodeToRemove); // <<< line 14
 $f = fopen(DIR_PUBLICIDADES,'w+'); 
 fwrite($f,$doc->saveXML()); 
 fclose($f); 
 }
 }
 if ($nodeToRemove != null){

 $thedocument->removeChild($nodeToRemove);
 $f = fopen(DIR_PUBLICIDADES,'w+'); 
 fwrite($f,$doc->saveXML()); 
 fclose($f); 
 }
}
 header("location:publicidades.php"); 


 ?>

мой код XML

<!--?xml version="1.0" encoding="utf-8"?-->
<publicidades>
 <internas>
 
 </internas>
 <externas>

 </externas>
</publicidades>
1 ответ

Проблема заключается в методе removeChild. Эта ошибка является результатом:

Восстанавливается, если oldnode не является дочерним элементом этого узла.

$nodeToRemove на <item< code="">, а <code>$thedocument на узел корневого элемента, который является .

<p> является дочерним элементом не .</p> <p> <span>EDIT:</span> попробуйте добавить:</p> <pre class="prettyprint linenums">$internas = $doc-&gt;documentElement-&gt;getElementsByTagName('internas');</pre> <p> сразу после:</p> <pre class="prettyprint linenums">$thedocument = $doc-&gt;documentElement;</pre> <p> и затем :(<span>EDIT2</span>)</p> <pre class="prettyprint linenums">foreach ($internas as $node) { $node-&gt;parentNode-&gt;removeChild($node); }</pre>

licensed under cc by-sa 3.0 with attribution.