a ver si alguno de vosotros me saca del atolladero en el que estoy.
tengo el siguiente fichero xml
Código:
y lo importo mediante el siguiente codigo<?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>
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;
?>
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