Исключение 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->documentElement->getElementsByTagName('internas'); </pre> <p> сразу после:</p> <pre class="prettyprint linenums">$thedocument = $doc->documentElement; </pre> <p> и затем :(<span>EDIT2</span>)</p> <pre class="prettyprint linenums">foreach ($internas as $node) { $node->parentNode->removeChild($node); } </pre>

licensed under cc by-sa 3.0 with attribution.