2010-08-30 147 views
14

我想從使用PHP DOM一個XML節點中刪除所有的孩子中刪除所有的孩子,有什麼區別:)從XML節點PHP DOM

while ($parentNode->hasChildNodes()){ 
    $parentNode->removeChild($parentNode->childNodes->item(0)); 
} 

一B)

$node->nodeValue = ""; 

我更喜歡第二個,似乎我得到了同樣的結果,但我不確定。

感謝, 卡洛斯

+0

我更喜歡第一個,因爲沒有雜亂知道DOM是如何工作的,很容易看到發生了什麼(,因此它更具可讀性恕我直言)...... – ircmaxell 2010-08-30 19:54:07

+0

是啊,你是對,事情是我愛一行代碼:)。無論如何,有沒有什麼區別? – 2010-08-30 20:03:59

+0

如果節點有多個孩子,則使用版本B會引起一些奇怪的字符。與一個小孩沒有什麼不同 – Xaver 2013-09-03 15:22:37

回答

4

removeChild()是做事情的更 「正確」 的方式。雖然您可以將該節點的內容設置爲"",這將獲得所需的效果,但調用removeChild()對於發生的情況要明顯得多。然而,這是我的假設,在極小的水平上,nodeValue()稍微有效一些。

22

稍微收緊:

while ($parentNode->hasChildNodes()) { 
    $parentNode->removeChild($parentNode->firstChild); 
    }