A complete, executable, minimal example of how to copy between documents:
$doc1 = domxml_open_mem('<one><onething/></one>');
$doc2 = domxml_open_mem('<two><twothing/></two>');
$root1 = $doc1->document_element();
$root2 = $doc2->document_element();
(PHP 4 >= 4.1.0)
DomNode->clone_node — Clones a node
domelement DomNode->clone_node ( void )
Към момента тази функция не е документирана; наличен е единствено списъкът с аргументите й.
add a note User Contributed Notes DomNode->clone_node - [5 notes]
sworley at dotster dot com ¶
6 years ago
krymsonwulf at gmail dot com ¶
6 years ago
It seems like this function is non-recursive: cloning a node will not clone it's child nodes in my experience
andrew at transitionmedia dot co dot uk ¶
7 years ago
As of version 4.3 PHP doesn't support Appending a child from another source document. If you are trying to import information from multiple sources into a final document [for transformation using XSL as an example] then you can have problems. This technique can be used to do it though.
I am assuming you have two documents open, $xmldoc1 and $xmldoc2 and you have selected [via XPath or explicit searching] the nodes you want in each document. Thus $xmldoc1_appending_node is the node you would like to add $xmldoc2_importnode to.
// first we create a temporary node within the document we want to add to.
$temp_importnode = $xmldoc1->create_element("import");
// now we have a node that is in the right document context we can clone the one we want into this one.
$temp_importnode = $xmldoc_importnode->clone_node(true);
// by using true in the above call to clone_node() we copy all of the child nodes as well. Use false or nothing if you just want the containing node with no children.
Now your document contains the new nodes imported from a different document.
hrz at geodata dot soton dot ac dot uk ¶
8 years ago
Passing boolean 'true' as the argument to this function will result in all child nodes being cloned as well.