2010-08-30 17 views
14

Quiero eliminar todos los niños a partir de un nodo XML usando PHP DOM, ¿hay alguna diferencia entre:Retire todos los niños a partir de un XML Nodo PHP DOM

A)

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

Y

B)

$node->nodeValue = ""; 

yo prefiero la segunda, parece que estoy consiguiendo el mismo resultado, pero no estoy seguro.

Gracias, Carlos

+0

Yo prefiero la primera, ya que sin intrincadamente saber cómo funciona el DOM es fácil ver lo que está pasando (y, como tal, es mi humilde opinión más legible) ... – ircmaxell

+0

Sí, usted está bien, el problema es que me encanta el código de una línea :). De todos modos, ¿hay alguna diferencia? –

+0

usando la versión B causa algunos caracteres extraños en mi caso si el nodo tiene más de un hijo. Sin embargo, no hay diferencia con un solo niño – Xaver

Respuesta

4

removeChild() es la forma más "correcta" de hacer las cosas. Si bien puede establecer los contenidos de ese nodo en "" y esto obtendrá el efecto deseado, llamar al removeChild() es mucho más evidente en cuanto a lo que está sucediendo. Sin embargo, supongo que, en un nivel minúsculo, nodeValue() es un poco más eficiente.

22

ligeramente más ajustado:

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