What's not mentioned here is that DOMNode::appendChild() can also be used to move an existing node to another part of the DOMDocument, e.g.<?php$doc = new DOMDocument();$doc->loadXML("<foobar><bar/><foo/></foobar>");$bar = $doc->documentElement->firstChild;$foo = $doc->documentElement->lastChild;$foo->appendChild($bar);print $doc->saveXML();?>This produces:<?xml version="1.0"?><foobar><foo><bar/></foo></foobar>Note that the nodes "<foo/>" and "<bar/>" were siblings, i.e. the first and last child of "<foobar>" but using appendChild() we were able to move "<bar/>" so that it is a child of "<foo/>".This saves you the trouble of doing a DOMNode::removeChild($bar) to remove "<bar/>" before appending it as a child of "<foo/>". Kris Dover