Foros del Web » Programando para Internet » PHP »

Eliminar childnode en php

Estas en el tema de Eliminar childnode en php en el foro de PHP en Foros del Web. Hola chicos tengo un problema.. es q tengo un xml y estoy tratando de eliminar algunos nodos especificos... si pueden ayudarme se los agradezco mucho ...
  #1 (permalink)  
Antiguo 25/06/2009, 11:17
 
Fecha de Ingreso: junio-2007
Ubicación: Argentina
Mensajes: 111
Antigüedad: 16 años, 10 meses
Puntos: 0
Exclamación Eliminar childnode en php

Hola chicos tengo un problema.. es q tengo un xml y estoy tratando de eliminar algunos nodos especificos... si pueden ayudarme se los agradezco mucho

les dejo mi ejemplo:
por ejemplo borrar el nodo TContactus pero solo el que contenga la fecha 23/6/2009 05:39:16

Codigo XML
Código PHP:
<?xml version="1.0" ?>
 <Padre>
       <TContactus>
        <costa>Este</costa>
        <fecha>23/6/2009 05:39:16</fecha>
        <art>Articulo XXX</art>
        <name>Sergio</name>
        <message>Hola, prueba final</message>
      </TContactus>
 <Padre>
Codigo PHP
Código PHP:
$archivo "contact_backup.xml";
$fp fopen($archivo,'r');
$texto fread($fpfilesize($archivo));
fclose($fp);

$nodo rawurldecode($_GET["delete"]);

if (
file_exists($archivo))

    
$noticias = new SimpleXMLElement(file_get_contents($archivo)); 
    if(
$noticias)
    {
        foreach (
$noticias->TContactus as $noticia)
        { 
            
$posi1 $noticia->costa;
            
$posi2 $noticia->message;
            
            if(
$noticia->fecha == $nodo)
            {
                
//echo $posi1." ".$posi2;
                
$posicionInicio strrpos($textorawurldecode($noticia->costa));
                
$posicionFinal strrpos($textorawurldecode($noticia->message));
                echo 
$posicionInicio;
                
$texto substr($texto$posicionInicio$posicionFinal);
                break;
            }
        }
    }

Muchas Gracias
  #2 (permalink)  
Antiguo 25/06/2009, 11:36
 
Fecha de Ingreso: junio-2007
Ubicación: Argentina
Mensajes: 111
Antigüedad: 16 años, 10 meses
Puntos: 0
(SOLUCIONADO) Eliminar childnode en php

Listo chicos... lo pude solucionar...

El codigo quedo asi

Código PHP:
$archivo "contact_backup.xml";

$nodo rawurldecode($_GET["delete"]);

$xml = new DOMDocument();
$xml->load($archivo);
$nodelist=$xml->getElementsByTagName('TContactus'); 
$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)=='fecha' && ((string) $innernodelist->item($j)->nodeValue)==$nodo)
        {
            
$remove=$nodelist->item($i);
            
$remove->parentNode->removeChild($remove); 
        }
    }
}

if (
$remove!==null)

$xml->save($archivo);

  #3 (permalink)  
Antiguo 19/10/2009, 14:59
 
Fecha de Ingreso: abril-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Respuesta: Eliminar childnode en php

Hola, usando tu mismo xml

<Padre>
<TContactus>
<costa>Este</costa>
<fecha>23/6/2009 05:39:16</fecha>
<art>Articulo XXX</art>
<name>Sergio</name>
<message>Hola, prueba final</message>
</TContactus>

<TContactus>
<costa>Norte</costa>
<fecha>23/6/2009 06:39:16</fecha>
<art>Articulo XXXXX</art>
<name>Juan</name>
<message>Hola, prueba final</message>
</TContactus>
<Padre>

cómo puedo borrar todo un nodo con sus hijos, por ejemplo el segundo bloque de:

<TContactus>
<costa>Norte</costa>
<fecha>23/6/2009 06:39:16</fecha>
<art>Articulo XXXXX</art>
<name>Juan</name>
<message>Hola, prueba final</message>
</TContactus>

usando un post de php

$costa = $_POST['costa'];




Muchas Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:24.