Удаление элемента из XML-файла формы в PHP - PullRequest
0 голосов
/ 23 марта 2012

Я пытался выяснить это с помощью предыдущих ответов, но я не могу сделать это заранее, я следовал за ответом Стефана Удалите ребенка с определенным атрибутом, в SimpleXML для PHP

и мой кодis

xml:

    <?xml version="1.0" encoding="utf-8"?>
    <res>
    <items>
    <item>
    <id>1</id>
    <a>asdasda</a>
    </item>
    <item>
    <id>1</id>
    <a>bababba</a>
    </item>
    <id>2</id>
    <a>sasdasda</a>
    </item>
    <item>       
    <id>3</id>
    <a>sasdasda</a>
    </item>
    <item>
    <id>4</id>
    <a>sasdasda</a>
    </item>
    <item>
    <id>5</id>
    <a>sasdasda</a>
    </item>
    <item>
    <id>6</id>
    <a>sasdasda</a>
    </item>
    </items>
    </res>

и php это

   <?php
   $id="1";
   $xml = simplexml_load_file("filtracjaxml.xml") ;

   foreach($xml->items->item->id as $id)
   {
       if($id == '1') {
           $xml=dom_import_simplexml($id);
           $xml->parentNode->removeChild($xml);
       }
   }
   echo $xml->asXml();
   ?>

, когда я пытаюсь запустить его, у меня есть

    Fatal error: Call to undefined method DOMElement::asXml() in filtruj.php on line 14

EDIT:

Я хочу удалить весь «элемент», а не только «id» - все элементы с id = 1

, поэтому я изменил код:

    foreach ( $xml->items->item as $id )
    {
        if ( $id->id == '1' ) {
            $tmp = dom_import_simplexml($id);
            $tmp->parentNode->removeChild($tmp);
        }
    }
    echo $xml->asXml();

и этоудаляет только первый элементНе могли бы вы сказать мне, почему?что не так в коде, написанном выше?

1 Ответ

1 голос
/ 23 марта 2012
<?php
$id="1";
$xml = simplexml_load_file("filtracjaxml.xml") ;

foreach ( $xml->items->item->id as $id )
{
    if ( $id == '1' ) {
        $tmp = dom_import_simplexml($id);
        $tmp->parentNode->removeChild($tmp);
    }
}
echo $xml->asXml();
?>
...