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 :-) |