2012-04-29 26 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呼应。但节点没有被删除。它仍然在文件中。

我的XML文件看起来像:

<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 2013-06-24 03:17:52

回答