2012-04-29 5 views
1

以前に属性値を設定する方法について、これに関する質問を投稿しました。この属性を持つ要素を削除することはできないと私は考えましたが。私は検索しようとするが、それでも私は適切な作業の答えを見つけることができません。私が本当に助けてくれることを願っています。これは私のコードです。属性値を探しているxml文書に行き、この属性値を持つノードの親ノードを削除しようとします。このコードを実行した結果として、SimpleXMLElementを削除するには?

 $xml = new SimpleXMLElement($xmlfile,0,true); 

     $results = $xml->xpath("/presets/preset"); 

     foreach ($results as $result) { 
     foreach ($result->children() as $second_gen) { 
      if($second_gen->getName()=='name'){ 
       foreach($second_gen->attributes() as $a => $b) { 
        if($b==$preset_name){ 
         echo($b); 
          echo($preset_name); 
          unset($result); 
         } 

       } 
      } 

     } 
     } 
     $xml->asXML(); 

私はエラーを取得していないと私は正しい$b$preset_name反響を持っています。しかし、ノードは削除されません。それはまだ文書の中にあります。私はにSimpleXMLElementクラスを使用することなく、簡単な答えを見つけることが

<presets> 
<preset> 
<name code="default">Default</name> 
    <createdBy>p</createdBy> 
    <icons>q</icons> 
</preset> 
<preset> 
    <name code="new_preset">New Preset</name> 
    <createdBy>x</createdBy> 
    <icons>y</icons> 
</preset> 
... 
</presets> 
+0

'unset($ result);' - 結果は配列です。設定を解除すると、配列から何も削除されません。そのxpathで返されたsimpleXMLElementを削除したい場合は、次を参照してください:[PHP SimpleXML - xpathノードを削除する](http://stackoverflow.com/a/4137027/367456) - xpath式をより表現力豊かにコードを大きく減らすこともできます。 – hakre

答えて