方法: DOMNode::cloneNode()
概述: cloneNode() 方法用于克隆节点。它创建并返回当前节点的一个副本,包括其所有的属性以及子节点。
语法: DOMNode::cloneNode(bool $deep = true): DOMNode|false
参数:
$deep (可选): 指定是否克隆节点的所有子节点。默认值为 true,表示克隆整个子树。如果设置为 false,则只克隆当前节点。返回值:
DOMNode 对象,表示克隆的节点。false。示例:
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="1">Apple</item>
<item id="2">Banana</item>
</root>';
$dom = new DOMDocument();
$dom->loadXML($xml);
$items = $dom->getElementsByTagName('item');
foreach ($items as $item) {
$cloneNode = $item->cloneNode();
$cloneNode->setAttribute('id', 'new_' . $item->getAttribute('id'));
$cloneNode->nodeValue = 'New ' . $item->nodeValue;
$dom->documentElement->appendChild($cloneNode);
}
echo $dom->saveXML();
解释:
以上示例中,我们使用 cloneNode() 方法克隆了 <item> 节点并向其添加了一个新的标识符以及修改了节点值。然后,我们将克隆的节点添加到 <root> 元素中。
输出结果:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="1">Apple</item>
<item id="2">Banana</item>
<item id="new_1">New Apple</item>
<item id="new_2">New Banana</item>
</root>
注意事项:
appendChild() 或类似的方式将其添加到适当的位置。$deep 参数设置为 false。