Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2018, 14:04
sotadeoros
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Importacion xml a mysql

Buenas

a ver si alguno de vosotros me saca del atolladero en el que estoy.

tengo el siguiente fichero xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by Oracle Reports version 11.1.2.2.0 -->
<REPARTOS_R_SB>
  <LIST_G_REPARTO>
    <G_REPARTO>
      <CRC_EMPRESA>1</CRC_EMPRESA>
      <CRC_NUMERO_REPARTO>42916</CRC_NUMERO_REPARTO>
      <CRC_CENTRO>DM01</CRC_CENTRO>
      <ESTADO>ABIERTO</ESTADO>
      <CRC_AGENCIA_TRANSPORTE>999</CRC_AGENCIA_TRANSPORTE>
      <CRC_FECHA_REPARTO>04/07/18</CRC_FECHA_REPARTO>
      <AGENCIA_TRANSPORTE>999 - SERVIRUTA</AGENCIA_TRANSPORTE>
      <CENTRO>DM01 - NOMBRE DEL CENTRO</CENTRO>
      <LIST_G_ALBARANES>
        <G_ALBARANES>
          <CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
          <CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
          <CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
          <CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
          <CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
          <CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
          <MODALIDAD>ENTREGA</MODALIDAD>
          <CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
          <CRD_OBSERVACIONES></CRD_OBSERVACIONES>
          <CRD_BULTOS>1</CRD_BULTOS>
          <CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
          <CRD_CLIENTE_PROVEEDOR>70227080</CRD_CLIENTE_PROVEEDOR>
          <CRD_DOCUMENTO>70157296</CRD_DOCUMENTO>
          <CRD_EMPRESA>1</CRD_EMPRESA>
          <CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
          <CRD_ORDEN_REPARTO>5</CRD_ORDEN_REPARTO>
          <CRD_EJERCICIO>2018</CRD_EJERCICIO>
          <CRD_ESTADO>en Curso</CRD_ESTADO>
          <CP_NOMBRE>cliente1</CP_NOMBRE>
          <CP_NOMBRE_OBRA>CLIENTE 1</CP_NOMBRE_OBRA>
          <CP_DIRECCION>DIRECCION 1</CP_DIRECCION>
          <CP_POBLACION>45517 - ESCALONILLA</CP_POBLACION>
          <CP_PROVINCIA>TOLEDO</CP_PROVINCIA>
          <CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
          <CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
          <CP_IMPORTE_ALBARAN>1965,6</CP_IMPORTE_ALBARAN>
          <CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
          <CP_PKLIST></CP_PKLIST>
          <CP_CENTRO>DM02 - CENTRO1</CP_CENTRO>
        </G_ALBARANES>
        <G_ALBARANES>
          <CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
          <CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
          <CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
          <CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
          <CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
          <CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
          <MODALIDAD>ENTREGA</MODALIDAD>
          <CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
          <CRD_OBSERVACIONES></CRD_OBSERVACIONES>
          <CRD_BULTOS>6</CRD_BULTOS>
          <CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
          <CRD_CLIENTE_PROVEEDOR>70200059</CRD_CLIENTE_PROVEEDOR>
          <CRD_DOCUMENTO>70157271</CRD_DOCUMENTO>
          <CRD_EMPRESA>1</CRD_EMPRESA>
          <CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
          <CRD_ORDEN_REPARTO>10</CRD_ORDEN_REPARTO>
          <CRD_EJERCICIO>2018</CRD_EJERCICIO>
          <CRD_ESTADO>en Curso</CRD_ESTADO>
          <CP_NOMBRE>CLIENTE 2</CP_NOMBRE>
          <CP_NOMBRE_OBRA>CLIENTE 2</CP_NOMBRE_OBRA>
          <CP_DIRECCION>DIRECCION 2</CP_DIRECCION>
          <CP_POBLACION>45500 - TORRIJOS</CP_POBLACION>
          <CP_PROVINCIA>TOLEDO</CP_PROVINCIA>
          <CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
          <CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
          <CP_IMPORTE_ALBARAN>210,49</CP_IMPORTE_ALBARAN>
          <CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
          <CP_PKLIST></CP_PKLIST>
          <CP_CENTRO>DM02 - CENTRO2</CP_CENTRO>
        </G_ALBARANES>
        <G_ALBARANES>
          <CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
          <CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
          <CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
          <CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
          <CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
          <CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
          <MODALIDAD>ENTREGA</MODALIDAD>
          <CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
          <CRD_OBSERVACIONES>S/Ref:T/210</CRD_OBSERVACIONES>
          <CRD_BULTOS>1</CRD_BULTOS>
          <CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
          <CRD_CLIENTE_PROVEEDOR>70200754</CRD_CLIENTE_PROVEEDOR>
          <CRD_DOCUMENTO>70157268</CRD_DOCUMENTO>
          <CRD_EMPRESA>1</CRD_EMPRESA>
          <CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
          <CRD_ORDEN_REPARTO>15</CRD_ORDEN_REPARTO>
          <CRD_EJERCICIO>2018</CRD_EJERCICIO>
          <CRD_ESTADO>en Curso</CRD_ESTADO>
          <CP_NOMBRE>CLIENTE 3</CP_NOMBRE>
          <CP_NOMBRE_OBRA>CLIENTE 3</CP_NOMBRE_OBRA>
          <CP_DIRECCION>DIRECCION 3</CP_DIRECCION>
          <CP_POBLACION>45500  - TORRIJOS</CP_POBLACION>
          <CP_PROVINCIA>TOLEDO</CP_PROVINCIA>
          <CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
          <CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
          <CP_IMPORTE_ALBARAN>22,71</CP_IMPORTE_ALBARAN>
          <CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
          <CP_PKLIST></CP_PKLIST>
          <CP_CENTRO>DM02 - CENTRO 3</CP_CENTRO>
        </G_ALBARANES>
        <G_ALBARANES>
          <CRD_NOALB_D_POSTAL></CRD_NOALB_D_POSTAL>
          <CRD_NOALB_NOMBRE></CRD_NOALB_NOMBRE>
          <CRD_NOALB_DIRECCION></CRD_NOALB_DIRECCION>
          <CRD_NOALB_POBLACION></CRD_NOALB_POBLACION>
          <CRD_NOALB_PROVINCIA></CRD_NOALB_PROVINCIA>
          <CRD_NOALB_TELEFONO></CRD_NOALB_TELEFONO>
          <MODALIDAD>ENTREGA</MODALIDAD>
          <CRD_TIPO_REPARTO>A</CRD_TIPO_REPARTO>
          <CRD_OBSERVACIONES>S/Ref:718183</CRD_OBSERVACIONES>
          <CRD_BULTOS>1</CRD_BULTOS>
          <CRD_MOTIVO_FALLO></CRD_MOTIVO_FALLO>
          <CRD_CLIENTE_PROVEEDOR>70300240</CRD_CLIENTE_PROVEEDOR>
          <CRD_DOCUMENTO>70157265</CRD_DOCUMENTO>
          <CRD_EMPRESA>1</CRD_EMPRESA>
          <CRD_NUMERO_REPARTO>42916</CRD_NUMERO_REPARTO>
          <CRD_ORDEN_REPARTO>20</CRD_ORDEN_REPARTO>
          <CRD_EJERCICIO>2018</CRD_EJERCICIO>
          <CRD_ESTADO>en Curso</CRD_ESTADO>
          <CP_NOMBRE>CLIENTE 4</CP_NOMBRE>
          <CP_NOMBRE_OBRA>718183</CP_NOMBRE_OBRA>
          <CP_DIRECCION>DIRECCION 4</CP_DIRECCION>
          <CP_POBLACION>CLIENTE 4</CP_POBLACION>
          <CP_PROVINCIA>MADRID</CP_PROVINCIA>
          <CP_TELEFONO>Telf. 666666666</CP_TELEFONO>
          <CP_FECHA_DOCUMENTO>04/07/18</CP_FECHA_DOCUMENTO>
          <CP_IMPORTE_ALBARAN>56,27</CP_IMPORTE_ALBARAN>
          <CF_DATOS_POR_DOCUMENTO>0</CF_DATOS_POR_DOCUMENTO>
          <CP_PKLIST></CP_PKLIST>
          <CP_CENTRO>DM03 - CENTRO 4</CP_CENTRO>
        </G_ALBARANES>
      </LIST_G_ALBARANES>
      <CS_TOT_DOC>39</CS_TOT_DOC>
      <CF_TOT_DIR>23</CF_TOT_DIR>
      <CS_TOT_BULTOS>53</CS_TOT_BULTOS>
      <CS_TOT_IMPORTE>10742,56</CS_TOT_IMPORTE>
    </G_REPARTO>
  </LIST_G_REPARTO>
  <PIE> Informe generado por AMIGUELANEZ el 06/07/18 09:09:28</PIE>
</REPARTOS_R_SB>
y lo importo mediante el siguiente codigo
Código PHP:
<?php
//import.php
//sleep(3);
$output '';

if(isset(
$_FILES['file']['name']) &&  $_FILES['file']['name'] != '')
{
 
$valid_extension = array('xml');
 
$file_data explode('.'$_FILES['file']['name']);
 
$file_extension end($file_data);
 if(
in_array($file_extension$valid_extension))
 {
  
$data simplexml_load_file($_FILES['file']['tmp_name']);
  
$connect = new PDO('mysql:host=localhost;dbname=testing','root''');
  
$query "
  INSERT INTO envio 
         (expedi, codigo, consigna, domicilio, provin, bultos, tipo, observ, telefono, enviado, fecha1) 
  VALUES(:expedi,:codigo,:consigna,:domicilio,:provin,:bultos,:tipo,:observ,:telefono,:enviado, curdate());
  "
;
  
$statement $connect->prepare($query);
  for(
$i 0$i count($data); $i++)
  {
   
$statement->execute(
    array(
     
':expedi'   => substr($data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CRD_DOCUMENTO,2),
     
':codigo'   => "122",
     
':consigna' => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_NOMBRE_OBRA,
     
':domicilio'=> $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_DIRECCION,
     
':provin'   => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_PROVINCIA,
     
':bultos'   => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CRD_BULTOS,
     
':tipo'     => "P",
     
':observ'   => $data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CRD_OBSERVACIONES,
     
':telefono' => substr($data->LIST_G_REPARTO->G_REPARTO->LIST_G_ALBARANES->G_ALBARANES[$i]->CP_TELEFONO,6),
     
':enviado'  => "N"
    
)
   );

  }
  
$result $statement->fetchAll();
  if(isset(
$result))
  {
   
$output '<div class="alert alert-success">Import Data Done</div>';
  }
 }
 else
 {
  
$output '<div class="alert alert-warning">Invalid File</div>';
 }
}
else
{
 
$output '<div class="alert alert-warning">Please Select XML File</div>';
}

echo 
$output;

?>
y mo problema radica en que sólo me importa dos registros, cliente 1 y cliente 2

Si hago un debugger con netbeans me da que el valor de $data el 2, y no soy capaz de hacer que recorra todo el fichero.

Sin embargo si quito nodos, y dejo el xml solo con las etiquetas <list_g_albaranes> y <g_albaranes> si me recorre todo el fichero.
Sabeis que puede ser?

Un saludo