我从某个源获取XML字符串。我创建一个DOMDocument对象并将XML字符串加载到其中(使用DOMDocument :: loadXML())。然后我使用各种方法(例如DOMXPath)浏览XML文档,直到找到我想要的节点(当然是DOMNode)。
这个节点有一堆后代,我想取整个节点(及其后代)并从中创建一个新的DOMDocument对象。我不知道该怎么做;我尝试创建一个新的DOMDocument并使用DOMDocument :: importNode(),但这似乎只有在DOMDocument中已经有一个主文档节点时才有效,在这种情况下它会将导入的节点作为主文档节点的子节点附加,这不是我想要的 - 我希望导入的节点成为DOMDocument主节点。
也许有一种更简单的方法(即更简单的方法来提取原始XML的一部分,我想将其转换为自己的文档),但我不知道。我是DOMDocument的新手,虽然我已经使用了SimpleXMLElement足以让它烦恼。
答案 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));
我现在无法尝试,但这应该有用。