Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1677 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  parser un fichier xml

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

parser un fichier xml

n°1452777
donny3
Posté le 05-10-2006 à 14:01:43  profilanswer
 

salut
 
 
Est ce que quelqu'un aurait un script qui permette de parser un fichier xml ?
 
 
Merci

mood
Publicité
Posté le 05-10-2006 à 14:01:43  profilanswer
 

n°1452785
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-10-2006 à 14:15:16  profilanswer
 

search.cpan.org -> xml

n°1452802
donny3
Posté le 05-10-2006 à 14:30:00  profilanswer
 

Citation :


 
#######################################################################
 
use strict;
use XML::Parser;
 
my $in_title=0;
 
my $parser= new XML::Parser( Style => 'Stream');
 
if( $ARGV[0]) { $parser->parsefile( $ARGV[0]); }   # parse the file
else          { $parser->parse( \*STDIN);   }
 
exit;
 
sub StartTag                                       # called for all star tags                                                 { my( $p, $gi, %att)= @_;
    if( ($gi eq 'bktlong') || ($gi eq 'bktshort'))
      { print "<$gi ";                             # will be closed in Text
        $in_title=1;                               # triggers Text processing  
      }
    else
      { print $p->recognized_string(); }           # else just print
  }
 
sub Text                                           # called for each string
  { if( $in_title)                                 # if in title
      { my ($title_no, $title_text)=               # separate the num from
            (/\A(\d+)\.?\s*(.*)\Z/);               # the rest of the text
        print "num=\"$title_no\">";                # close the title tag
        print "<num>$title_no</num>$title_text";   # print the num alement
        $in_title=0;                               # not in title anymore
      }
    else
      { print ; }                                  # else just print
  }


 
j'ai troouver ce code sur le net donc je l'ai mis dans un fichier .pl
je lance en mettant dans ma ligne de commande le nom du fichier xml mais sa bogue

Citation :

syntax error at C:\Documents and Settings\t\Bureau\t\xml.pl line 30
, near "sub StartTag                                       # called for all star
 tags                                                 { my( $p, $gi, %att)= @_;
    if"
Execution of C:\Documents and Settings\t\Bureau\t\xml.pl aborted du
e to compilation errors.

n°1452825
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-10-2006 à 14:57:08  profilanswer
 

toute la ligne la:
[code]sub StartTag                                       # called for all star tags                                                 { my( $p, $gi, %att)= @_; [/exit]
est écrite sur une seule ligne, l'accolade devrait être une ligne plus bas.

n°1452828
donny3
Posté le 05-10-2006 à 15:03:34  profilanswer
 

merci je viens de voir
il est bizarre ce script
il m'affiche tout mon fichier xml dans ma fenetre de commande

n°1452851
donny3
Posté le 05-10-2006 à 15:43:05  profilanswer
 

j'ai beau tourner sur le net
j'ai pas trouver de script

n°1453126
pospos
Posté le 05-10-2006 à 22:42:54  profilanswer
 

parser un fichier XML ca peut vouloir dire plein de choses.
Tout depend de ce que tu veux extraire...

n°1453181
donny3
Posté le 06-10-2006 à 08:14:41  profilanswer
 

ok  
merci pospos
mon fichier se presente ainsi
<source nom="Fournisseur" ....>
<champ  nom="numfournisseur" type="varchar"...>
 
je souhaite extraire le nom de la source et en dessous du nom les nom de champs et le type qui leur corresponde.
Fournisseur
numfournisseur varchar
adresse           varchar
....
 
est ce possible ?

n°1453366
pospos
Posté le 06-10-2006 à 13:56:49  profilanswer
 

regarde deja ce que tu peux faire avec une solution simple genre XML::Simple
 
Ce module va parser ton XML et le transformer en une structure de données perl dans laqeulle tu pourra recuperer ce que tu veux (mais pour ca il te faudra maitriser cette partie du langage)

n°1454142
donny3
Posté le 09-10-2006 à 11:31:46  profilanswer
 

j'ai essayer xml::simple
mais il ne reconnait pas ForceArray  
Unrecognised option: ForceArray

mood
Publicité
Posté le 09-10-2006 à 11:31:46  profilanswer
 

n°1454155
gen2
Posté le 09-10-2006 à 11:39:28  profilanswer
 

C'est surement un problème de syntaxe.
Mais si tu veux qu'on t'aide, il faut nous fournir ton code.

n°1454172
donny3
Posté le 09-10-2006 à 11:51:54  profilanswer
 

voila le code  que j'utilise

Code :
  1. #! /usr/bin/perl
  2. use XML::Simple;
  3. use Data::Dumper;
  4. # creation de l'object:
  5. my $xml = new XML::Simple;
  6. # On lit notre fichier xml
  7. my $data = $xml->XMLin("./test.xml",KeyAttr => [], ForceContent => 1, ForceArray => [qw(file segment)]);
  8. #Je passe en revue chaque fichier (branche "file" dans le xml)
  9. foreach my $file_tab (@{$data->{file}}){
  10.        print $file_tab->{name}."\n";
  11.     foreach my $segment_tab (@{$file_tab->{segments}->{segment}}){
  12.         print "\t".$segment_tab->{content}."\n";
  13.    
  14.     }
  15. }


 
 
fichier xml

Citation :


 
<?xml version="1.0" encoding="iso-8859-1" ?>
<xml>
 <file name="file1">
  <groups>
   <group>Groupe1</group>
  </groups>
  <segments>
   <segment >Seg1</segment>
   <segment >Seg2</segment>
  </segments>
 </file>
 
 <file name="file2">
  <groups>
   <group>Group2</group>
  </groups>
  <segments>
   <segment >Seg1</segment>
   <segment >Seg2</segment>
   <segment >Seg3</segment>
  </segments>
 </file>
</xml>
 


 
et l'erreur

Citation :


Unrecognised option: ForceArray at C:\Documents and Settings\x\Bureau\x\x.pl line 9

n°1454381
donny3
Posté le 09-10-2006 à 15:14:36  profilanswer
 

personne ne voit ???

n°1454609
gen2
Posté le 09-10-2006 à 22:01:50  profilanswer
 

Essaie de remplacer :  

Code :
  1. ForceArray => [qw(file segment)]


 
par :

Code :
  1. ForceArray => qw(file segment)


 
Ca devrait aller mieux.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  parser un fichier xml

 

Sujets relatifs
Parser un fichier xml volumineux sur plusieurs pages ?[Résolu] parser un fichier xml en ignorant le DTD
Parser un fichier ligne par ligneParser un fichier csv
Parser un fichier Atom XML ?[JavaScript/XML] Parser un fichier XML en variable arbre
[java] Parser un fichier XML[expressions régulières] Parser un fichier properties
[Awk] : parser un nom de fichier 
Plus de sujets relatifs à : parser un fichier xml


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR