DOM XML (PHP 4) 函数
在线手册:中文 英文
PHP手册

DomNode::clone_node

(PHP 4 >= 4.1.0)

DomNode::clone_node Clones a node

说明

domelement DomNode::clone_node ( void )

Warning

本函数还未编写文档,仅有参数列表。


DOM XML (PHP 4) 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: Clones a node

用户评论:

sworley at dotster dot com (21-Nov-2006 10:00)

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();
$root1->append_child($root2->clone_node(true));
echo $doc1->dump_mem();
?>

Emits: <one><onething/><two><twothing/></two></one>

krymsonwulf at gmail dot com (05-Jun-2006 10:41)

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 (12-Feb-2006 03:04)

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.

$xmldoc1_appending->append_child($importnode);

?>

Now your document contains the new nodes imported from a different document.

hrz at geodata dot soton dot ac dot uk (11-May-2005 04:28)

Passing boolean 'true' as the argument to this function will result in all child nodes being cloned as well.

r dot kamstra at syntomax dot com (08-Nov-2002 04:06)

if a DomNode is duplicated it's siblings and parent are not duplicated