如何克隆节点并将其用作新DOMDocument的documentElement?

时间:2011-05-05 10:19:08

标签: php dom

在PHP5中,我有一个DOMDocument($xmlDoc1)。假设它的documentElement是:<root id="1" type=""/>。我创建了一个新的DOMDocument $xmlDoc2

我需要做的是克隆$xmlDoc1的documentElement(包含其属性,但不包括其子项),并将其用作$xmlDoc2的documentElement。

在ASP中,你可以写:

XMLDoc2.DocumentElement = XMLDoc1.DocumentElement.CloneNode(False)

PHP DOM有cloneNode()方法,但不允许将克隆节点附加到另一个文档。

我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

看看:

http://php.net/manual/en/domdocument.importnode.php

示例:

<?php
$dom = new DomDocument();
$dom->loadXml('<root attr1="a" attr2="b"><foo></foo></root>');

$dom2 = new DomDocument();
$dom2->appendChild(
    $dom2->importNode($dom->documentElement->cloneNode(false), true) 
);

header('Content-Type: text/xml; charset="UTF-8"');
echo $dom2->saveXml();

执行时:

http://codepad.org/yCFegZbp