I have the following XML (string1):
<?xml version="1.0"?>
<root>
<map>
<operationallayers>
<layer label="Security" type="feature" visible="false" useproxy="true" usePopUp="all" url="http://stackoverflow.com"/>
</operationallayers>
</map>
</root>
And I have this piece of XML (string2):
<operationallayers>
<layer label="Teste1" type="feature" visible="false" useproxy="true" usePopUp="all" url="http://stackoverflow.com"/>
<layer label="Teste2" type="dynamic" visible="false" useproxy="true" usePopUp="all" url="http://google.com"/>
</operationallayers>
I used the funcion simplexml_load_string to import both to the respectives var:
$xml1 = simplexml_load_string($string1);
$xml2 = simplexml_load_string($string2);
Now, I want to replace the node 'operationallayers' of the string1 for the node 'operationallayers' of the string2, but how?
The class SimpleXMLElement does not have a method 'replaceChild' like the DOM has.
Similar to what has been outlined in SimpleXML: append one tree to another you can import those nodes into
DOMDocument
because as you write:So when you import into DOM you can use those:
Which gives you the following output (non-beautified):
Additionally you can then take this and add the operation to your SimpleXMLElement so that it's easily wrapped. This works by extending from SimpleXMLElement:
Usage Example:
Related: In SimpleXML, how can I add an existing SimpleXMLElement as a child element?.
Last time I extended SimpleXMLElement on Stackoverflow was in an answer to the "Read and take value of XML attributes" question.