Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/03/2014, 08:34
striderwar
 
Fecha de Ingreso: diciembre-2005
Ubicación: Jalisco
Mensajes: 31
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Leer texto row por row.

Hola muchas gracias... apenas vi tu mensaje y me encontre con fgetcsv();

que lee cada row, y creo es mucho mas sencillo de usar...

modifique el codigo que tenia por este.

EDIT: Para quien necesite o le sirva.

Este codigo lee un archivo csv y cada row edita atributos especificos de una plantilla xml.
y guarda un xml por cada row.

Muchas gracias por la ayuda.

Código PHP:
<?php

function csv_in_array($csv,$xml ) {

$doc = new DOMDocument();
$xml2 $xml;
$doc->load($xml2);  
$xp = new DOMXPath($doc);

   
$row 1;
   
$handle fopen($csv"r");
     
# Rows Counter
    
$csvxrow file($csv);
    
$csvxrow[0] = chop($csvxrow[0]);
    
$anzdata count($csvxrow);
   while ((
$data fgetcsv($handle1000",")) !== FALSE) {
       
$num count($data);
       
$row++;
         for (
$c=0$c $num$c++) {
       
               foreach(
$xp->query('/ROOT/HEADER/@KEY[. != ""]') as $attrib)
               {
                
$attrib->nodeValue $data[0];
               }
               foreach(
$xp->query('/ROOT/DATA/SAPMES/LOIPRO/E1FKOL/@AUFNR[. != ""]') as $attrib)
               {
                
$attrib->nodeValue $data[0];
               }
               foreach(
$xp->query('/ROOT/DATA/SAPMES/LOIPRO/E1FKOL/@MATNR[. != ""]') as $attrib)
               {
                
$attrib->nodeValue $data[1];
               }
               foreach(
$xp->query('/ROOT/DATA/SAPMES/LOIPRO/E1FKOL/@GAMNG[. != ""]') as $attrib)
               {
                
$attrib->nodeValue $data[2];
               }
               foreach(
$xp->query('/ROOT/DATA/SAPMES/LOIPRO/E1FKOL/@GSTRS[. != ""]') as $attrib)
               {
                
$attrib->nodeValue $data[3];
               }
               foreach(
$xp->query('/ROOT/DATA/SAPMES/LOIPRO/E1FKOL/@GLTRS[. != ""]') as $attrib)
               {
                 
$fecha = new DateTime($data[3]);
                  
$fecha->add(new DateInterval('P1M'));
                 
$attrib->nodeValue $fecha->format('Y-m-d');
               }
            }
               
$name $data[0] .'-'$data[1];
               
$ruta './XML/';
               
$doc->formatOutput true;
          echo 
$doc->saveXML();
               
$doc->save($ruta.date('Y-m-d').'-'.$name.'.xml');
       
    }
fclose($handle);

    echo 
$anzdata " XML Creados";  

return 
$data;
}
// --------------------------------------------------------------

?>

<?php

// ----- call ------
$csvdata csv_in_array("LISTOTA.csv""A2CBOT.xml");
// -----------------

?>
EDIT: Terminado y Funcionando.
Ya lo unico que me falta es crear un xml por cada row.

muchas gracias por la ayuda y saludos.

Última edición por striderwar; 10/03/2014 a las 10:50