2011-07-19 6 views
0

これまで同様の質問をしていましたが、他の同様の質問があり、答えが無かったので投票しました。私はまだ完全に困惑しているので、私はどんな助けにも感謝します。PHPでのXML removeChild with id

質問はここに前に来ている:How do I remove a specific node using its attribute value in PHP XML Dom?

をその質問への回答で提案されているように私は私のコードを適応していると、それはまだ動作しません。

私のXMLは、これに似たレイアウトである:

<fooBar> 
<cat> 
    <thing id="111"> 
     <title></title> 
     <desc></desc> 
     <link></link> 
     <img></img> 
    </thing> 
     <thing id="222"> 
     <title></title> 
     <desc></desc> 
     <link></link> 
     <img></img> 
    </thing> 
     .............etc 
</cat> 
</fooBar> 

そして、次のように私のPHPは次のとおりです。

$r = $_GET['removeChild']; 
$x = "upload/".($_GET['xml']); 

    $doc = new DOMDocument(); 
       $doc->load($x); 

    $xpath = new DOMXpath($doc); 
       $nodeList = $xpath->query('//thing[@id="'.$r.'"]'); 

    if ($nodeList->length) { 
     $node = $nodeList->item(0); 
     $node->parentNode->removeChild($node); 
    } 

    $doc->saveXML(); 
    echo $x. "<br /> " .$r; 

正しい値がエコーされており、XMLファイルとして正しくロードされています私はそれが変更されていることがわかりますが、何も削除されていません。私はまた、xpath行に既知のIDをハードコーディングしようとしましたが、同じ結果が得られます。私は一日のうちにこれを動作させようと努力しています。

答えて

3

ちょうどあなたがsaveを使用してディスクに戻して保存していることを確認します。

+0

私はそれが何かばかげたことを知っていましたが、他の誰かからそれを聞くのが常に良いです。ありがとうございました! – tcnarss