lo otro es que noi me manejo mucho con perl, y ademas no tengo tiempo. es decir si alghuno tuviera la paciencia de decirme como estaria muy agradecido.
Atte.
MG
| |||
| Hola. Amigos necesito exportar un xml a txt, el problema es que son aprox. unos 3000 archivos. todos con formato identico. lo otro es que noi me manejo mucho con perl, y ademas no tengo tiempo. es decir si alghuno tuviera la paciencia de decirme como estaria muy agradecido. Atte. MG
__________________ Dios es mas grande que tu problema :-) |
| ||||
| Re: xml a txt es fácil, simplemente tienes que parsear cada XML con algún parser como el http://search.cpan.org/~grantm/XML-S.../XML/Simple.pm y guardarlo en txt...abriéndolo simplemente ya lo guarda, como ser open(FILE, ">$file"); print FILE $codigoparaarchivo; close(FILE); Espero que te sirva Saludos
__________________ Esteban Quintana |
| |||
|
__________________ Dios es mas grande que tu problema :-) |
| |||
| esto es lo que hice. C:\Perl\bin>ppm PPM - Programmer's Package Manager version 3.4. Copyright (c) 2001 ActiveState Software Inc. All Rights Reserved. Entering interactive shell. Using Term::ReadLine::Perl as readline library. Type 'help' to get started. ppm> install XML::Simple Searching for 'XML::Simple' returned no results. Try a broader search first. Gracias por tu respuesta.
__________________ Dios es mas grande que tu problema :-) |
| |||
| aun no puedo meter un xml en un archivo solo llegue a la parte de mostrar la data. Código PHP:
__________________ Dios es mas grande que tu problema :-) |
| ||||
| Re: xml a txt El XML::Simple tiene una función de XMLout que te graba la info en un archivo... Seguramente estarás usando mal la referencia...El $ data es un array ? no es una referencia a un % ? Saludos
__________________ Esteban Quintana |
| |||
| Re: xml a txt mira Código PHP: me recomiendas un manual? (si fuese español mucho mejor.) Muchas Gracias.
__________________ Dios es mas grande que tu problema :-) |
| |||
| Re: xml a txt Pero... ¿cada archivo xml contiene una única marca <Archivo> o puede contener más? Ya veo que <Salida> es la raíz, pero la duda es sobre <Archivo>. Según sea uno o más, dependerá la solución. |
| |||
| Cita: podria tener mas tag <Archivo> y <Salida> es la raiz.Te agradezco mucho tu respuesta. Atte. MG
__________________ Dios es mas grande que tu problema :-) |
| |||
| Re: xml a txt Con el programa
Código:
y el fichero de entrada kk.xml:#!/usr/bin/perl
use XML::Simple;
use strict;
use warnings;
my $xml = XMLin('kk.xml', ForceArray => [ 'Archivo' ]);
foreach my $archivo ( @{ $xml->{Archivo} } ) {
print
join q{;},
$archivo->{CodigoEstado} ,
$archivo->{Nombre} ,
$archivo->{Concesionaria} ,
$archivo->{Observaciones} ,
$archivo->{FechaProceso} ,
;
print "\n";
}
Código:
hace la salida:<?xml version="1.0" encoding="UTF-8"?>
<Salida>
<Archivo>
<CodigoEstado>6</CodigoEstado>
<Nombre>ingreso_0302320001_20070518.xml</Nombre>
<Concesionaria>3</Concesionaria>
<Observaciones> [Firmado]</Observaciones>
<FechaProceso>12/06/2007 03:01</FechaProceso>
</Archivo>
<Archivo>
<CodigoEstado>7</CodigoEstado>
<Nombre>ingreso_0302320001_20070518.xml</Nombre>
<Concesionaria>4</Concesionaria>
<Observaciones> [Firmado]</Observaciones>
<FechaProceso>13/06/2007 03:01</FechaProceso>
</Archivo>
</Salida>
Código:
El problema de XML::Simple es que es tan simple que hay que manejarse muy bien con las estructuras de datos en Perl. El uso del módulo Data::Dumper es casi imprescindible, en estos casos, para saber qué es lo que estamos leyendo.6;ingreso_0302320001_20070518.xml;3; [Firmado];12/06/2007 03:01 7;ingreso_0302320001_20070518.xml;4; [Firmado];13/06/2007 03:01 Otra forma de hacer el programa:
Código:
Otra forma, más oscura, de hacer el print principal más corto, es usando un "hash slice":#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
my $xml = XMLin('kk.xml', ForceArray => [ 'Archivo' ]);
my $numero_de_archivos = @{ $xml->{Archivo} };
for ( my $i = 0; $i < $numero_de_archivos; $i++ ) {
print
join q{;},
$xml->{Archivo}->[$i]->{CodigoEstado} ,
$xml->{Archivo}->[$i]->{Nombre} ,
$xml->{Archivo}->[$i]->{Concesionaria} ,
$xml->{Archivo}->[$i]->{Observaciones} ,
$xml->{Archivo}->[$i]->{FechaProceso} ,
;
print "\n";
}
Código:
print
join ";",
@{$xml->{Archivo}->[$i]}
{qw(CodigoEstado Nombre Concesionaria Observaciones FechaProceso)};
Última edición por jferrero; 26/07/2007 a las 15:19 |
| |||
| Solo les escribo para darles las gracias! por fin gracias a tu ejemplo me resulto. Muy agradecido. MG
__________________ Dios es mas grande que tu problema :-) |