2012-03-09 60 views
0

以及家伙这段代码特罗这个例外,我不知道为什么......异常XML + PHP

exception: Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in C:\AppServ\www\CpVela\publicidades\delete_pub.php:14 Stack trace: #0 C:\AppServ\www\CpVela\publicidades\delete_pub.php(14): DOMNode->removeChild(Object(DOMElement)) #1 {main} thrown in C:\AppServ\www\CpVela\publicidades\delete_pub.php on line 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> 
     <item nombre="Tony Roma's" numero="SOL_17" posX="266" posY="229" telefono="" web="" correo="" encargado="" descripcion="" promocion="" ></item> 
    </internas> 
    <externas> 

    </externas> 
</publicidades> 

回答

0

问题是与你的removeChild之法。 此错误的结果:

Raised if oldnode is not a child of this node.

$nodeToRemove reffers到<item, 而$thedocument reffers到作为<publicidades>根元素节点。

<item><internas>的子代,而不是<public...>

编辑: 尝试增加:

$internas = $doc->documentElement->getElementsByTagName('internas'); 

右后:

$thedocument = $doc->documentElement; 

,然后:(EDIT2

foreach ($internas as $node) { 
    $node->parentNode->removeChild($node); 
} 
+0

但怎么可能???如果$ thedocument是$ doc-> documentElement:S $ doc-> documentElemnt不是$ doc的子项? – 2012-03-09 21:26:41

+0

'回声'循环中'当前元素'的值。 – 2012-03-09 21:28:52

+0

echo $ attrValue; //结果= SOL_17 – 2012-03-09 21:34:59