2012-11-03 57 views
0

將節點從一個DOMDocument對象導入另一個DOMDOcument對象時,nodeValue似乎丟失。從另一個DOMDocument對象導入元素時,nodeValue丟失

Q1。有人知道爲什麼(這是一個bug?)

Q2。我怎樣才能解決這個問題?


示例代碼:

$doc1 = new DOMDocument(); 
$div = $doc1->createElement('div'); 

$doc2 = new DOMDocument(); 
$span = $doc2->createElement('span', 'Span text'); 

$spanCopy = $doc1->importNode($span); 
$div->appendChild($spanCopy); 
$doc1->appendChild($div); 

$otp = $doc1->saveHTML(); 

var_dump($span->nodeValue); 
var_dump($spanCopy->nodeValue); 
var_dump($otp); 

輸出:

string 'Span text' (length=9) 
string '' (length=0) 
string '<div><span></span></div>' (length=25) 

答案:

看來,爲了執行深層複製,您需要將true作爲第二個參數傳遞給importNode。

$spanCopy = $doc1->importNode($span, true); 

回答

0

答:

看來,爲了執行深拷貝,你需要通過真正的第二個參數importNode。

$spanCopy = $doc1->importNode($span, true); 
+0

很好的問題和回答自己 –

+0

我在牆上撞了我的頭2個多小時,所以我決定在SO中發佈這個問題。 10分鐘後我自己想出了......墨菲定律我猜... – Tivie