xclntdesign Posted April 13, 2009 Share Posted April 13, 2009 I've been working on a script to open an XML file, insert a node, then save the file again. $url = '../v3flashslideshow/slideshow_data0.xml'; $xml = new DomDocument(); $xml->formatOutput = true; $xml->preserveWhitespace = false; $xml->load($url); $xpath = new DOMXPath($xml); $first = $xpath->query('//galleries/gallery/img')->item(0); // create node $new = $xml->createElement("img"); $xml->appendChild($new); $image = $xml->createAttribute("src"); $new->appendChild($image); $new->setAttribute("src", $_GET['image']); $first->parentNode->insertBefore($new, $first); echo $xml->save($url); The above code works except for the fact that it adds the new node twice. When I change the last line to: echo $xml->saveXML(); to display the code on the screen, it works fine, with the new node added only once. I've tried many different work arounds, and nothing seems to work. Anyone have any ideas? Thanks in advance. Quote Link to comment Share on other sites More sharing options...
ToonMariner Posted April 13, 2009 Share Posted April 13, 2009 hmm strange... i personally add the node to the dom after creating and populating it. try this and let us know what happens... $new = $xml->createElement("img"); $image = $xml->createAttribute("src"); $new->appendChild($image); $new->setAttribute("src", $_GET['image']); $xml->appendChild($new); Quote Link to comment Share on other sites More sharing options...
xclntdesign Posted April 13, 2009 Author Share Posted April 13, 2009 Wow! You made it seem so simple. That indeed did the trick. I think that was the one variation I didn't try. Thanks! Quote Link to comment Share on other sites More sharing options...
ToonMariner Posted April 13, 2009 Share Posted April 13, 2009 I may be misreading but one more littel tweak $new = $xml->createElement("img"); $image = $xml->createAttribute("src"); $new->appendChild($image); $new->setAttribute("src", $_GET['image']); $xml->appendChild($new); you create the src attribute on the $image object but set it on the $new(node) object... should it not be $new = $xml->createElement("img"); $image = $xml->createAttribute("src"); $image->setAttribute("src", $_GET['image']); $new->appendChild($image); $xml->appendChild($new); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.