PHP DOMDocument replaceChild

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-

我无法使这种方法起作用

我有以下PHP代码:

        $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请参见-引用全局命名空间中的类时需要反斜杠。谢谢。我向您保证这不是问题所在。我可以调用所有其他方法。