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. Link to comment https://forums.phpfreaks.com/topic/153846-dom-xml-issue/ 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); Link to comment https://forums.phpfreaks.com/topic/153846-dom-xml-issue/#findComment-808539 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! Link to comment https://forums.phpfreaks.com/topic/153846-dom-xml-issue/#findComment-808545 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); Link to comment https://forums.phpfreaks.com/topic/153846-dom-xml-issue/#findComment-808568 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.