I\'m trying to build a rather complex XML document.
I have a bunch of sections of the XML document that repeats. I thought I\'d use multiple string templates as base
As far as I know, you can't do it with SimpleXML because addChild
doesn't make a deep copy of the element (being necessary to specify the tag name can easily be overcome by calling SimpleXMLElement::getName()
).
One solution would be to use DOM instead:
With this function:
function sxml_append(SimpleXMLElement $to, SimpleXMLElement $from) {
$toDom = dom_import_simplexml($to);
$fromDom = dom_import_simplexml($from);
$toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
}
We have for
");
$n1 = simplexml_load_string("one ");
$n2 = simplexml_load_string("two ");
sxml_append($sxml, $n1);
sxml_append($sxml, $n2);
echo $sxml->asXML();
the output
one two
See also some user comments that use recursive functions and addChild
, e.g. this one.