2010-08-30 34 views
14

Tôi muốn loại bỏ tất cả trẻ em từ một Node XML sử dụng PHP DOM, là có bất kỳ sự khác biệt giữa:Hủy bỏ tất cả trẻ em từ một XML Node PHP DOM

Một)

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

B)

$node->nodeValue = ""; 

Tôi thích thứ hai, có vẻ như tôi nhận được kết quả tương tự nhưng tôi không chắc chắn.

Cảm ơn, Carlos

+0

Tôi thích là người đầu tiên, kể từ mà không phức tạp biết làm thế nào DOM làm việc thật dễ dàng để xem những gì đang xảy ra (Và như vậy nó dễ đọc hơn IMHO) ... – ircmaxell

+0

Yeah, bạn là đúng, điều là tôi yêu một dòng code :). Dù sao, có sự khác biệt nào không? –

+0

sử dụng phiên bản B gây ra một số ký tự lạ trong trường hợp của tôi nếu nút có nhiều hơn một con. Không có sự khác biệt với một đứa trẻ mặc dù – Xaver

Trả lời

4

removeChild() là nhiều cách "thích" làm việc. Trong khi bạn có thể đặt nội dung của nút đó thành "" và điều này sẽ có được hiệu ứng mong muốn, hãy gọi số removeChild() rõ ràng hơn nhiều so với những gì đang diễn ra. Tuy nhiên, nó sẽ là giả định của tôi rằng, trong một mức độ trừ, nodeValue() là hơi hiệu quả hơn.

22

Hơi chặt chẽ hơn:

while ($parentNode->hasChildNodes()) { 
    $parentNode->removeChild($parentNode->firstChild); 
    } 
Các vấn đề liên quan