Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/09/2008, 14:55
vicu
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Borrar nodos vacios de XML con php!!

Hola Nancy:

Buscando resolver como eliminar nodos de un xml con php, encontre tu ejemplo que me sirvio para llegar a la solucion de mi problema, previo encontrar la que te servira a ti (aunque supongo que dado el tiempo transcurrido ya la habras encontrado).

1º.- Te sugiero colocar el encoding en el archivo xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>

2º.- La sentencia
$remove->parentNode->removeChild($remove);

debe ir dentro del if del segundo for en lugar del break2, ya que tal como esta solamente funciona para el primer nodo vacio que encuentra.

El script php queda asi:

<?php

$xml = new DOMDocument();
$xml->load('RegistroClientes.xml');
$nodelist=$xml->getElementsByTagName('cliente');
$remove=null;

for ($i = 0; $i < $nodelist->length; $i++)
{
$innernodelist=$nodelist->item($i)->childNodes;

for ($j = 0; $j < $innernodelist->length; $j++)
{

if (( (string) $innernodelist->item($j)->nodeName)==='clave' && ((string) $innernodelist->item($j)->nodeValue)==='')
{
$remove=$nodelist->item($i);
$remove->parentNode->removeChild($remove);
}
}
}

if ($remove!==null)
{
$xml->save('RegistroClientes.xml');
}
?>

Gracias a tu trabajo pude realizar el mio.

Hasta siempre.