将元素从一个DOMDocument添加到另一个DOM

时间:2015-12-17 12:02:52

标签: php domdocument

我有3个DOMDocuments,

$legacyDomDocument1 = new DOMDocument();
$legacyDomDocument2 = new DOMDocument();
$legacyDomDocument3 = new DOMDocument();

我想获得这三个文件的相同元素,并删除一些孩子。

$standortName = $legacyDomDocument->getElementById('produkt_title');
$standortName->parentNode->removeChild($standortName);
$standortName = $legacyDomDocument2->getElementById('produkt_title');
$standortName->parentNode->removeChild($standortName);
$standortName = $legacyDomDocument3->getElementById('produkt_title');
$standortName->parentNode->removeChild($standortName);

我还从第一个DOM中获取了一个导航栏。

 $rs = $legacyDomDocument->getElementById('submenue');

我可以轻松添加子标题。

$r->appendChild($rs);

但是我在添加其他两个DOMDocuments中的元素时仍遇到问题。

$import = $legacyDomDocument->importNode($legacyDomDocument2, true);
$legacyDomDocument->appendChild($import);
$import = $legacyDomDocument->importNode($legacyDomDocument3, true);
$legacyDomDocument->appendChild($import);

我做错了什么? 使用saveHTML后,浏览器会说:

Warning: DOMDocument::importNode() [domdocument.importnode]: Cannot import: Node Type Not Supported in /is/htdocs/wp1175221_C648A6HQST/www/v9/legacyParser/index.php on line 82

第82行是我上面的导入部分。我究竟做错了什么?

1 个答案:

答案 0 :(得分:2)

一个人无法直接导入DOMDocument:你应该更深入地使用documentElement属性来改进层次结构(这会给你一个DOMElement):

$import = $legacyDomDocument->importNode($legacyDomDocument2->documentElement, true);

顺便说一下,在追加时使用documentElement似乎也是合适的:

$legacyDomDocument->documentElement->appendChild($import);

这是说明这个概念的demo。请注意删除中间人documentElement时的区别:第二个文档的内容基本上插在根节点附近,这几乎不是预期的结果。