Foros del Web » Programando para Internet » PHP »

Lectura fichero xml

Estas en el tema de Lectura fichero xml en el foro de PHP en Foros del Web. Buenas, Estoy leyendo un fichero externo xml con la siguiente estructura: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código XML: Ver original <Registro > <campo1 > 1 </campo1 > <campo2 ...
  #1 (permalink)  
Antiguo 07/12/2014, 05:24
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Lectura fichero xml

Buenas,
Estoy leyendo un fichero externo xml con la siguiente estructura:
Código XML:
Ver original
  1. <Registro>
  2. <campo1>1</campo1>
  3. <campo2>2</campo2>
  4. <campo3>3>/campo3>
  5. </Registro>

Para leerlo uso el siguiente código:
Código PHP:
Ver original
  1. $xml_file = 'fichero.xml';
  2. if (file_exists($xml_file)) {
  3.     $xml = simplexml_load_file($xml_file);
  4.         foreach ($xml->Registro as $Registro) {
  5.             $campo1 = $Registro->campo1;
  6.             $campo2 = $Registro->campo2;
  7.             $campo3 = $Registro->campo3;
  8.         }
  9. }

Lo que me gustaría es no tener que escribir campo a campo, sinó algo parecido a:
Código PHP:
Ver original
  1. $campo[i] = ${"Registro->campo".$i}
pero no funciona, podría alguien ayudarme?
Muchas gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no

Última edición por mblascog; 07/12/2014 a las 12:56
  #2 (permalink)  
Antiguo 10/12/2014, 11:56
 
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

Etiquetas: fichero, lectura, registro, variable, xml
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 03:13.