从PHP中的DOMNode创建DOMDocument

时间:2010-02-10 04:36:37

标签: php xml dom domdocument

我从某个源获取XML字符串。我创建一个DOMDocument对象并将XML字符串加载到其中(使用DOMDocument :: loadXML())。然后我使用各种方法(例如DOMXPath)浏览XML文档,直到找到我想要的节点(当然是DOMNode)。

这个节点有一堆后代,我想取整个节点(及其后代)并从中创建一个新的DOMDocument对象。我不知道该怎么做;我尝试创建一个新的DOMDocument并使用DOMDocument :: importNode(),但这似乎只有在DOMDocument中已经有一个主文档节点时才有效,在这种情况下它会将导入的节点作为主文档节点的子节点附加,这不是我想要的 - 我希望导入的节点成为DOMDocument主节点。

也许有一种更简单的方法(即更简单的方法来提取原始XML的一部分,我想将其转换为自己的文档),但我不知道。我是DOMDocument的新手,虽然我已经使用了SimpleXMLElement足以让它烦恼。

2 个答案:

答案 0 :(得分:14)

您还可以创建一个新的DOMDocument并在其上调用appendChild()以添加根节点:

$new = new DomDocument;
$new->appendChild($new->importNode($node, true));

这对我有用。

答案 1 :(得分:1)

你不能只创建一个新的DOMDocument并加载节点的XML吗?

$new = new DOMDocument;
$new->loadXML($node->ownerDocument->saveXML($node));

我现在无法尝试,但这应该有用。