PHP DOMDocument replaceChild
我无法使这种方法起作用 我有以下PHP代码:PHP DOMDocument replaceChild,php,dom,replace,children,Php,Dom,Replace,Children,我无法使这种方法起作用 我有以下PHP代码: $dom = new \DOMDocument(); $dom->loadHTML($this->_html); $newD = $viewElement->replaceHtml(); $oe = $dom->getElementById("{{ALViewElement_resume}}"); $ne = $newD-
$dom = new \DOMDocument();
$dom->loadHTML($this->_html);
$newD = $viewElement->replaceHtml();
$oe = $dom->getElementById("{{ALViewElement_resume}}");
$ne = $newD->getElementById("resume");
echo $dom->saveHTML();
echo $dom->saveHTML($oe);
echo $newD->saveHTML($ne);
echo $dom->saveHtml($oe->parentNode);
$oe->parentNode->replaceChild($ne, $oe);
echo $dom->saveHTML($ne);
echo $dom->saveHTML();
所以我创建了一个DOMDocument,并加载了一些html。然后调用$viewmelement->replacethtml()
,这是我在其他地方使用的返回另一个DOMDocument对象的函数
然后,$oe
是我最初在传入的html中拥有的元素,$ne是在我的replacetHTML调用中创建的DOMDocument中的元素。我想用$ne
替换$oe
然后我有所有这些回声。第一个将显示从什么开始的$dom
,这是正确的
下一步将显示原始元素(我要替换的元素),这是正确的。请注意,id以{{alviewelment\开头
下一个向您显示了我要用以替换原始元素的元素。请注意,除了id不是以ALViewElement开头外,其他都是一样的。不,我不是在寻找答案,说我可以很容易地用DOMDocument更改id,因为这不是我在这里要找的。
下一个调用显示原始元素的parentNode。它只是一个html片段,因此实际上没有parentNode。这会自动打印。请注意{{ALViewElement_uuID
然后我给孩子打电话
然后,接下来的两个回声没有打印任何东西。替换儿童没有工作,我失去了一切
为什么这不起作用?我错过了什么
编辑:忘记了HTML
我将它们放在一个jsFiddle中,这样就很容易看到:您应该首先克隆新节点,例如
$oe->parentNode->replaceChild($ne->cloneNode(true), $oe);
您应该首先克隆新节点,例如
$oe->parentNode->replaceChild($ne->cloneNode(true), $oe);
我看到很多post在DOMDocument之前带有一个“\\”。这意味着什么?这是由于我的命名空间。@user1513171请看-需要反斜杠来引用全局命名空间中的类。谢谢。我向你保证这不是问题。我可以调用所有其他方法。我看到很多post在DOMDocument之前带有一个“\\”。我看到很多post在DOMDocument之前带有一个“\\”。什么这是什么意思?这是因为我的命名空间。@user1513171请参见-引用全局命名空间中的类时需要反斜杠。谢谢。我向您保证这不是问题所在。我可以调用所有其他方法。