好吧,伙计们,这段代码处理了这个异常,我不知道为什么。。。
exception:致命错误:未捕获异常"DOMException",消息为中的"未找到错误"C: ''AppServ''www''CpVela''publicidades''delete_pub.php:14堆栈跟踪:#0C: ''AppServ''www''CpVela''publicidades''delete_pub.php(14):DOMNode->removeChild(Object(DOMElement))#1{main}抛出C: 第14行上的''AppServ''www''CpVela''publicidades''delete_pub.php
<?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>
<item nombre="Tony Roma's" numero="SOL_17" posX="266" posY="229" telefono="" web="" correo="" encargado="" descripcion="" promocion="" ></item>
</internas>
<externas>
</externas>
</publicidades>
问题出在removeChild方法上。此错误是由于:
如果oldnode不是此节点的子节点,则引发。
CCD_ 1参考CCD_,而CCD_ 3参考作为CCD_。
<item>
是<internas>
的子代,而不是<public...>
的子代。
编辑:尝试添加:
$internas = $doc->documentElement->getElementsByTagName('internas');
紧随其后:
$thedocument = $doc->documentElement;
然后:(EDIT2)
foreach ($internas as $node) {
$node->parentNode->removeChild($node);
}