将元素从一个 DOMDocument 添加到另一个 DOMDocument PHP
Add element from one DOMDocument to another one PHP
我有 3 个DOM文档,
$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);
但我在添加其他两个 DOM 文档中的元素时仍然遇到问题。
$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行是我上面导入的部分。我究竟做错了什么?
不能直接导入 DOMDocument
:你应该在层次结构中更深入一点,使用 documentElement 属性 代替(这会给你一个 DOMElement
):
$import = $legacyDomDocument->importNode($legacyDomDocument2->documentElement, true);
顺便说一句,看起来在附加时也使用 documentElement
是合适的:
$legacyDomDocument->documentElement->appendChild($import);
这里 demo 说明了这个概念。请注意当您删除中间文件时的区别 documentElement
:第二个文档的内容基本上插入到根节点附近,这几乎不是期望的结果。
我有 3 个DOM文档,
$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);
但我在添加其他两个 DOM 文档中的元素时仍然遇到问题。
$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行是我上面导入的部分。我究竟做错了什么?
不能直接导入 DOMDocument
:你应该在层次结构中更深入一点,使用 documentElement 属性 代替(这会给你一个 DOMElement
):
$import = $legacyDomDocument->importNode($legacyDomDocument2->documentElement, true);
顺便说一句,看起来在附加时也使用 documentElement
是合适的:
$legacyDomDocument->documentElement->appendChild($import);
这里 demo 说明了这个概念。请注意当您删除中间文件时的区别 documentElement
:第二个文档的内容基本上插入到根节点附近,这几乎不是期望的结果。