SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: holydrake en Domingo 11 de Febrero de 2007, 13:50

Título: Eliminar Nodos De Un Archivo Xml En Php
Publicado por: holydrake en Domingo 11 de Febrero de 2007, 13:50
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
  1.  
  2. <animales>
  3. <Vaca id_caravana="899">
  4. <id_caravana>899</id_caravana>
  5. <id_tipo_animal>toro</id_tipo_animal>
  6. <fecha_ingreso>07\02\6 </fecha_ingreso>
  7. <fecha_egreso>0000-00-00</fecha_egreso>
  8. <id_motivo_ingreso>2</id_motivo_ingreso>
  9. <id_motivo_egreso>0</id_motivo_egreso>
  10. <activo>1</activo>
  11. </Vaca>
  12. <Vaca id_caravana="896">
  13. <id_caravana>896</id_caravana>
  14. <id_tipo_animal>toro</id_tipo_animal>
  15. <fecha_ingreso>07\02\6 </fecha_ingreso>
  16. <fecha_egreso>0000-00-00</fecha_egreso>
  17. <id_motivo_ingreso>2</id_motivo_ingreso>
  18. <id_motivo_egreso>0</id_motivo_egreso>
  19. <activo>1</activo>
  20. </Vaca>
  21. <Vaca id_caravana="892">
  22. <id_caravana>892</id_caravana>
  23. <id_tipo_animal>toro</id_tipo_animal>
  24. <fecha_ingreso>07\02\6 </fecha_ingreso>
  25. <fecha_egreso>0000-00-00</fecha_egreso>
  26. <id_motivo_ingreso>2</id_motivo_ingreso>
  27. <id_motivo_egreso>0</id_motivo_egreso>
  28. <activo>1</activo>
  29. </Vaca>
  30. </animales>
  31.  
  32.  
Y quiero borrar el nodo Vaca id_caravana="896" con todos sus hijos
Como debo hacer?

Por cierto he intentado esto
Código: Text
  1.  
  2. <?php
  3. $incre=0;
  4.      $tel_node = null;
  5.      $doc = xmldocfile ('contact.xml');
  6.  
  7.     $raiz = $doc->document_element();
  8.  
  9.  
  10.      $elements = $doc->get_elements_by_tagname('animales');
  11.      while ($incre <= "100") {
  12.      $elementsa = $elements[$incre];
  13.      $elementsb = $elementsa->get_elements_by_tagname('Vaca');
  14.  
  15.      $elementsb[0]->get_attribute('id_caravana');
  16.  
  17.      if($elementsb == "67"){
  18.  
  19.      $element = $elements[$incre];
  20.      $children = $element->child_nodes();
  21.      $child = $element->remove_child($children[0]);
  22.  
  23.      }else{
  24.      $incre++;    
  25. }
  26.  
  27. }
  28.  
  29.  
  30.  
  31.      $doc->dump_file("contact.xml", false, true);
  32.  
  33. ?>
  34.  
  35.  
  36.  
  37.  

Pero sigo atorado por favor denme una mano
Título: Re: Eliminar Nodos De Un Archivo Xml En Php
Publicado por: Altareum en Miércoles 14 de Febrero de 2007, 14:49
Chequeaste que esté entrando al if ???
Por lo que veo en estas dos líneas:
Código: Text
  1. $elementsb[0]->get_attribute('id_caravana');
  2. if($elementsb == "67"){
  3.  

$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.