我有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行是我上面的导入部分。我究竟做错了什么?
答案 0 :(得分:2)
一个人无法直接导入DOMDocument
:你应该更深入地使用documentElement属性来改进层次结构(这会给你一个DOMElement
):
$import = $legacyDomDocument->importNode($legacyDomDocument2->documentElement, true);
顺便说一下,在追加时使用documentElement
似乎也是合适的:
$legacyDomDocument->documentElement->appendChild($import);
这是说明这个概念的demo。请注意删除中间人documentElement
时的区别:第二个文档的内容基本上插在根节点附近,这几乎不是预期的结果。