Como se encuentran el día de hoy?
Saben? ando con una duda.
Bueno, lo que pasa es que quisiera saber cómo borrar nodos padre que contengan nodos hijos vacios.
Por ejemplo:
Tengo el siguiente archivo XML de esta forma:
Código HTML:
<?xml version="1.0"?> <directorio xmlns="MiXml"> <cliente> <clave></clave> <nombre>Andrés</nombre> <edad>24</edad> </cliente> <cliente> <clave>1212</clave> <nombre>Anahí</nombre> <edad>17</edad> </cliente> <cliente> <clave></clave> <nombre>Angélica</nombre> <edad>25</edad> </cliente> <cliente> <clave>2323</clave> <nombre>Luis</nombre> <edad>15</edad> </cliente> </directorio>
Por decir que me quedara el archivo así:
Código HTML:
<?xml version="1.0"?> <directorio xmlns="MiXml"> <cliente> <clave>1212</clave> <nombre>Anahí</nombre> <edad>17</edad> </cliente> <cliente> <clave>2323</clave> <nombre>Luis</nombre> <edad>15</edad> </cliente> </directorio>
Este es el código:
Código PHP:
<?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);
break 2;
}
}
}
if ($remove!==null)
{
$remove->parentNode->removeChild($remove);
$xml->save('RegistroClientes.xml');
}
?>
Gracias de antemano.
Que se la pasen de lo mejor.