PDA

Visualizza la versione completa : convert file into XML


alexdem24
03-10-2008, 17:28
ciao a tutti
premetto che sono nuovo al linguaggio perl, ma non alla programmazione.

Vi do una visione generale di quello che ho e quello che so cercando di fare.

Ho due server che comunicano l'uno con l'atro soltanto attraverso la porta 80. Nel primo server ho l'attuale sito in php, mentre nel secondo ho perl installato con il file al quale sono interessato.
Praticamente ho creato uno script perl che prende un'argomento tramite GET (l'argopmento sarebbe il nome della cartella dove si trova il file che voglio), apre il file che si chiama "config" (dove al suo interno c'e' del testo formattato), e ne restituisce il contenuto.

Siccome questo file di testo e' formattato in un certo modo, ossia:
=====================
#nome
nome alex

#email
email abcde@miaemail.it

#data di nascita
dob

#indirizzo
address via monte del monte
=====================

Sto cercando di create un file XML da questo file di testo, in modo che posso processarlo e formattarlo tramite php.
Al momento sono riuscito a leggere il file e restituirne il contenuto, ma non e' formattato e di conseguenza non so come poterlo filtrare in base alle varie sezioni.


Qui sotto vi incollo il codice perl che ho scritto.
(premetto che sono all'inizio, quindi sicuramente troverete dei bug oppure delle cose che voi scrivereste in modo migliore..spero che possiate darmi qualche consiglio senza giudizi oppure battute fuori luogo).



#!/usr/bin/perl
use CGI;

print "Content-type: text/html\n\n";

# Set the the path where the site is stored in the filesystem
my $siteDir = "/usr/site";

# Check whether the path exists
unless (-d $siteDir) {
print "[ERROR]: The path of the site cannot be found.";
exit;
}


# Reads the site name from a query string
my $siteName = $ENV{'QUERY_STRING'};

my $confFile = "$siteName/config";
open (FILE,$siteDir."/".$confFile) || die "File not found.";

while ($line = <FILE>) {
print $line;
}

close(FILE);



Potreste darmi qualche consiglio a riguardo ?

grazie in anticipo.

MARTEDI
07-10-2008, 11:05
#!/usr/bin/perl

open (XML,">nome_file.xml"); #file xml da creare
print XML qq{<?xml version="1.0" encoding="utf-8"?>\n\n}; #testata XML
open (FIL,"nome_file_da_trasformare.txt"); #file da leggere
while (<FIL>)
{
chop $_; #tolgo il vai a capo
if ($tag ne "") #ho giÓ letto la prima riga
{
@mom=split(/ /,$_); #tolgo la prima parola
shift @mom;
print XML qq{<$tag>@mom</$tag>\n}; #inserisco il valore e chiudo il tag
$tag="";
}
if ($_ =~ /#/) #identifico il tag
{
$_ =~ s/#//;
$tag="$_";
$tag =~ s/ /_/g; #sostituisco gli spazi con "_"
}

}
close (FIL);
close (XML);

Loading