Programación Web y Scripting > PHP

 Eliminar Nodos De Un Archivo Xml En Php

(1/1)

holydrake:
Hola, estoy atorado y no puedo resolver este problema.
Quisiera saber como eliminar un nodo de una estructura xml

por ejemplo

Tengo la siguiente estructura:

--- Código: Text --- <animales><Vaca id_caravana="899"><id_caravana>899</id_caravana><id_tipo_animal>toro</id_tipo_animal><fecha_ingreso>07\02\6 </fecha_ingreso><fecha_egreso>0000-00-00</fecha_egreso><id_motivo_ingreso>2</id_motivo_ingreso><id_motivo_egreso>0</id_motivo_egreso><activo>1</activo></Vaca><Vaca id_caravana="896"><id_caravana>896</id_caravana><id_tipo_animal>toro</id_tipo_animal><fecha_ingreso>07\02\6 </fecha_ingreso><fecha_egreso>0000-00-00</fecha_egreso><id_motivo_ingreso>2</id_motivo_ingreso><id_motivo_egreso>0</id_motivo_egreso><activo>1</activo></Vaca><Vaca id_caravana="892"><id_caravana>892</id_caravana><id_tipo_animal>toro</id_tipo_animal><fecha_ingreso>07\02\6 </fecha_ingreso><fecha_egreso>0000-00-00</fecha_egreso><id_motivo_ingreso>2</id_motivo_ingreso><id_motivo_egreso>0</id_motivo_egreso><activo>1</activo></Vaca></animales>  Y quiero borrar el nodo Vaca id_caravana="896" con todos sus hijos
Como debo hacer?

Por cierto he intentado esto

--- Código: Text --- <?php$incre=0;     $tel_node = null;     $doc = xmldocfile ('contact.xml');     $raiz = $doc->document_element();       $elements = $doc->get_elements_by_tagname('animales');     while ($incre <= "100") {     $elementsa = $elements[$incre];     $elementsb = $elementsa->get_elements_by_tagname('Vaca');      $elementsb[0]->get_attribute('id_caravana');      if($elementsb == "67"){      $element = $elements[$incre];     $children = $element->child_nodes();     $child = $element->remove_child($children[0]);      }else{     $incre++;    } }        $doc->dump_file("contact.xml", false, true); ?>    
Pero sigo atorado por favor denme una mano

Altareum:
Chequeaste que esté entrando al if ???
Por lo que veo en estas dos líneas:

--- Código: Text ---$elementsb[0]->get_attribute('id_caravana');if($elementsb == "67"){ 
$elementsb es un Array, y luego lo estás comparando con "67" que en este caso es un string. Esto siempre será falso.

Saludos.
Altareum.

Navegación

[0] Índice de Mensajes

Ir a la versión completa