Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/12/2014, 11:56
mblascog
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Lectura fichero xml

Buenas, sigo con el problema, llevo ya días peleándome y nadie me ha contestado. Quizás no me expliqué bien. Lo intentaré de nuevo.

Tengo un fichero xml con la siguiente estructura:

Código XML:
Ver original
  1. <_UN>
  2.  
  3. <Registro>
  4.     <campo1>111</campo1>
  5.     <campo2>222</campo2>
  6.     <campo3>333</campo3>
  7.     <campo4>444</campo4>
  8.     <campo5>555</campo5>
  9.     <campo6>666</campo6>
  10.     <campo7>777</campo7>
  11.     <campo8>888</campo8>
  12.     <campo9>999</campo9>
  13. </Registro>
  14. <Registro>
  15.     <campo1>aaa</campo1>
  16.     <campo2>bbb</campo2>
  17.     <campo3>ccc</campo3>
  18.     <campo4>ccc</campo4>
  19.     <campo5>eee</campo5>
  20.     <campo6>fff</campo6>
  21.     <campo7>ggg</campo7>
  22.     <campo8>hhh</campo8>
  23.     <campo9>iii</campo9>
  24. </Registro>
  25. <_UN>

Y por cada campo[] tengo que insertar un registro en una tabla. Actualmente lo estoy haciendo de esta manera:

Código PHP:
Ver original
  1. $xml_file = 'fichero.xml';
  2.     if (file_exists($xml_file)) {
  3.         $xml = simplexml_load_file($xml_file);
  4.  
  5.         foreach ($xml->Registro as $Registro) {  
  6.             if ($Registro->campo1 != "") {
  7.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo1)."')";
  8.                 $result = mysql_query($qry) or die(mysql_error());
  9.             }
  10.             if ($Registro->campo2 != "") {
  11.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo2)."')";
  12.                 $result = mysql_query($qry) or die(mysql_error());
  13.             }
  14.             if ($Registro->campo3 != "") {
  15.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo3)."')";
  16.                 $result = mysql_query($qry) or die(mysql_error());
  17.             }
  18.             if ($Registro->campo4 != "") {
  19.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo4)."')";
  20.                 $result = mysql_query($qry) or die(mysql_error());
  21.             }
  22.             if ($Registro->campo5 != "") {
  23.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo5)."')";
  24.                 $result = mysql_query($qry) or die(mysql_error());
  25.             }
  26.             if ($Registro->campo6 != "") {
  27.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo6)."')";
  28.                 $result = mysql_query($qry) or die(mysql_error());
  29.             }
  30.             if ($Registro->campo7 != "") {
  31.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo7)."')";
  32.                 $result = mysql_query($qry) or die(mysql_error());
  33.             }
  34.             if ($Registro->campo8 != "") {
  35.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo8)."')";
  36.                 $result = mysql_query($qry) or die(mysql_error());
  37.             }
  38.             if ($Registro->campo9 != "") {
  39.                 $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo9)."')";
  40.                 $result = mysql_query($qry) or die(mysql_error());
  41.             }
  42.         }
  43.     }




Lo que quiero es hacer un bucle para reducir el código, pero no encuentro la manera de hacer variable el nombre del campo del fichero xml. Es decir, busco un código similar al siguiente, pero que funcione ($campo = $("Registro->campo" + $i) no es correcto:
Código PHP:
Ver original
  1. for ($i=1; $i<=9; $i++) {
  2.         $campo = $("Registro->campo" + $i);
  3.         if ($campo != "") {
  4.             $qry = "INSERT INTO tabla (campo) VALUES ('".addslashes($campo)."')";
  5.             $result = mysql_query($qry) or die(mysql_error());
  6.         }

}

Alguien me echa un cable? Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no