2015-12-17 179 views
1

我有3个DOMDocuments,从一个DOM文档添加元素到另外一个PHP

$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号线是我的上述进口部分。我究竟做错了什么?

+0

忘记一些代码: $ r-> appendChild($ pc1); $ r-> appendChild($ pc2); – Lightspeed

+0

你正试图导入一个DOMDocument实例,这是行不通的。你究竟想要导入什么? – VolkerK

+0

哦,忘了添加吧。 所有三个DOM都有相同的div('content_produkte')和几个我想添加到第一个dom的信息。 – Lightspeed

回答

1

人们不能直接导入DOMDocument:你应该在层次结构中的深一点,使用documentElement属性,而不是(即给你一个DOMElement):

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

顺便说一句,看起来是适当追加太时使用documentElement

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

这里的demo说明了这个概念。注意当您放弃中介documentElement时的差异:第二个文档的内容基本上插入到根节点附近,这并不是期望的结果。

+0

这个tipp帮了我很多。谢谢。 – Lightspeed

相关问题