Re: remove SimpleXML nodes

From: Date: Thu, 31 Aug 2006 16:39:18 +0000
Subject: Re: remove SimpleXML nodes
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-241292@lists.php.net to get a copy of this message
I found sample code. Hope this helps.
       $doc = new DOMDocument;
       if (!is_dir($source_dir)) {
           $logger->fatal("Source directory IN is not found.
Terminating...");
            die("Source directory IN is not found. Terminating...");
       }
       $doc->Load($source_dir . "/" . $xmlfilename);
       $xpath = new DomXPath($doc);
       // Find parent node
       $parent = $xpath->query($parent_path);
       // new node will be inserted before this node
       $next = $xpath->query($next_path);
       // Create the new element
       $contentidelement = $doc->createElement('source_id', $contentid);
       $element = $doc->createElement('fallback', 'true');
       $secondelement = $doc->createElement('fallback_locale',
$originatingLocale);
       // Insert the new element
       $parent->item(0)->insertBefore($contentidelement, $next->item(0));
       $parent->item(0)->insertBefore($element, $next->item(0));
       $parent->item(0)->insertBefore($secondelement, $next->item(0));
       //remove the language_code node.
       $parent->item(0)->removeChild($next->item(0));
       // append new node
       $newNode = $doc->createElement("language_code",
$currentfallbacklocale);
       $parent->item(0)->appendChild($newNode);
-- Anas Mughal On 8/31/06, Anas Mughal <anasmughal@gmail.com> wrote:
Yes, I agree. SimpleXML is limited. Do not expect to find advanced features in SimpleXML. Regards. On 8/31/06, Jay Paulson < Jay.Paulson@wholefoods.com> wrote:
So I want to do... $xmlDatabase = new SimpleXMLElement($myXML); foreach ($xmlDatabase as $oneTable) { if ($oneTable['name'] == 'two') {
      ///  ---- HERE I WANT TO DELETE THE $oneTable NODE
      unset($oneTable);   // <-- and this doesn't work...
} }
I tried to do the same a while back and could not figure it out. I
think
that SimpleXML is just that - simple. You should rather try using
DOMXML
functions, or as I did, roll an XML parser and do it like that.
Why can't you just recreate the XML and skip the node you don't want to include? So something like below: foreach ($xmlDatabase as $oneTable) {
    // skip node you don't want in your final xml output
    if ($oneTable['name'] != 'two')
    {
        ....
    }
} -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Anas Mughal
-- Anas Mughal

« previous php.general (#241292) next »