2012-04-29 2 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);' - Результат - массив. Отсоединение от него не удалит ничего кроме массива. Если вы хотите удалить simpleXMLElement, который был возвращен этим xpath, просто посмотрите: [PHP SimpleXML - Удалить узел xpath] (http://stackoverflow.com/a/4137027/367456) - Если вы написали выражение xpath более выразительным, даже может уменьшить ваш код в целом. – hakre

ответ