El xml es el siguiente:
Código XML:
Ver original
<?xml version="1.0"?> <calculadora> <procedimiento manual="0002" codigo="010101" tipovalor="uvr" valor="70.00" liquidacion="0" tipo_procedimiento="1" sala="1" especialista="14305" anestesiologo="02101" evento="1" ayudante="" consecutivo="1" orden="1" total="334935"> <nombre>PUNCION CISTERNAL VIA LATERAL</nombre> </procedimiento> <procedimiento manual="0002" codigo="530100" tipovalor="uvr" valor="70.00" liquidacion="0" tipo_procedimiento="9" sala="1" especialista="02102" anestesiologo="02101" evento="1" ayudante="" consecutivo="2" total="98700"> <nombre>HERNIORRAFIA INGUINAL DIRECTA (84)</nombre> </procedimiento> <procedimiento manual="0002" codigo="530100" tipovalor="uvr" valor="70.00" liquidacion="0" tipo_procedimiento="9" sala="1" especialista="02102" anestesiologo="02101" evento="1" ayudante="" consecutivo="3" total="98700"> <nombre>HERNIORRAFIA INGUINAL DIRECTA (84)</nombre> </procedimiento> <procedimiento manual="0002" codigo="530100" tipovalor="uvr" valor="70.00" liquidacion="0" tipo_procedimiento="9" sala="1" especialista="02102" anestesiologo="02101" evento="1" ayudante="" consecutivo="4" total="98700"> <nombre>HERNIORRAFIA INGUINAL DIRECTA (84)</nombre> </procedimiento> <procedimiento manual="0002" codigo="530100" tipovalor="uvr" valor="70.00" liquidacion="0" tipo_procedimiento="9" sala="1" especialista="02102" anestesiologo="02101" evento="1" ayudante="" consecutivo="5" total="98700"> <nombre>HERNIORRAFIA INGUINAL DIRECTA (84)</nombre> </procedimiento> </calculadora>
o en el enlace : http://dl.dropbox.com/u/9463718/calc...1110490997.xml
El problema radica en que yo debo eliminar los 4 ultimos nodos (consecutivo 2 a 5)
Porque son elementos repetidos en dos atributos
Yo envio el nodo a eliminar y posteriormente consulto si existen elementos con codigo y evento igual asi:
Código PHP:
Ver original
<?php $archivo=$_POST['archivo']; // archivo xml $codigo=$_POST['codigo']; //atributo codigo $evento=$_POST['evento']; // atributo evento $id=$_POST['fila']; //id fila para eliminar nodo $doc = new DOMDocument; $doc->load($archivo); $x = $doc->documentElement; //elimino el nodo seleccionado $y = $x->getElementsByTagName('procedimiento')->item($id); $oldy = $x->removeChild($y); $doc->save($archivo); //ahora leo el xml para comparar si hay elementos con el mismo codigo $xml = new SimpleXMLElement($archivo, null, true); $fil=""; $i=0; $c=0; foreach( $xml->procedimiento as $procedimientos ) { $even=$procedimientos['evento']; $cod=$procedimientos['codigo']; { $fil=$fil."@".$i; $c=1; } $i++; } if($c==1) { echo $fil."</br>"; //me muestra el id de las filas que son iguales en el atributo codigo y evento y que se deben eliminar $l=0; { $fila=$fil[$l]; $y = $x->getElementsByTagName('procedimiento')->item($fila); $oldy = $x->removeChild($y); $l++; } $doc->save($archivo); } ?>
Lo mas raro es que me muestra las filas que tiene que eliminar, pero nunca elimina la segunda, por ejemplo si mando a eliminar el consecutivo 5, no elimina el consecutivo 3, pero los otros si...y el id de esa fila si aparece entre el ciclo while....Cual podria ser el problema?...Agradezco me puedan ayudar...muchas gracias...........