Re: remove SimpleXML nodes
| From: | Anas Mughal | 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:-- Anas MughalthinkI tried to do the same a while back and could not figure it out. ISo 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...} }that SimpleXML is just that - simple. You should rather try usingDOMXMLfunctions, 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