![](/img/trans.png)
[英]PHP DOMElement appendChild get DOMException Wrong Document Error
[英]DOMElement cloning and appending: 'Wrong Document Error'
有些東西我不完全了解使用PHP的DOM api進行節點克隆。 這是一個示例文件,可以快速復制我遇到的問題。
$doc = new DOMDocument( '1.0', 'UTF-8' );
$root = $doc->createElement( 'root' ); // This doesn't work either $root = new DOMElement( 'root' );
$doc->appendChild( $root );
$doc2 = new DOMDocument( '1.0', 'UTF-8' );
$root2 = $doc2->createElement( 'root2' );
$doc2->appendChild( $root2 );
// Here comes the error
$root2->appendChild( $root->cloneNode() );
當您運行此小片段時,會拋出異常
致命錯誤:未捕獲的異常'DOMException',消息'Wrong Document Error'
我是否可以從文檔中獲取節點,克隆它,然后將其附加到另一個文檔?
在將節點添加到DOM之前,使用DOMDocument->importNode
將節點導入到其他文檔中。
您必須將importNode
方法的結果附加到DOM。 請記住,該方法在無法導入時可能會返回false
if ($importedNode = $doc2->importNode($root->cloneNode())) {
$root2->appendChild($importedNode);
}
如果需要導入節點,則所有子節點(反復地)和/或節點的屬性都使用deep
可選的第二個參數:
if ($importedNode = $doc2->importNode($root->cloneNode(), true)) {
$root2->appendChild($importedNode);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.