IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Probleme XML::Parser


Sujet :

Modules Perl

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 74
    Par défaut Probleme XML::Parser
    Bonjour je n'arrive pas a utliser xml parser pour extraire le contenu de balise xml <w:t></w:t>, j'ai beau chercher je trouve pas, j'ai quand meme réussie a extraire les données du xml (fichier xml office 2003) mais tout est mélangé et je ne veut que ce qui ce trouve entre ces balises


    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 74
    Par défaut
    Je vient de me rendre compte que j'ai oublié de poster le code que j'ai déjà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    #! /usr/bin/perl -w
    use strict;
    use XML::Parser;
    use LWP::Simple;
     
    my $p = new XML::Parser(Style=>'Subs', Pkg=>'SubHandlers', ErrorContext=>2);
    $p->setHandlers(Char => \&char);
     
    my $fichier = get("http://127.0.0.1:8080/office 2007/word/document.xml");
     
    $p->parse($fichier);
     
    exit 0;
     
     
    sub char {
      my ($p,$donnees) = @_;
     
      if ($donnees eq '<') {
          $donnees = '&lt;';
      } elsif ($donnees eq '>') {
          $donnees = '&gt;';
      } elsif ($donnees eq '&') {
         $donnees = '&amp;';
      }
      print $donnees;
    }
    Merci

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 74
    Par défaut
    Personn veut m'aider

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    colle nous ton fichier xml qu'on puisse le tester. S'il est trop gros, reduit le pour nous

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 74
    Par défaut
    Voici le xml il est pas trop gros !!!

    celui la c pour office 2007 pas de prb pr extraire le texte mais pour les xml office 2003 comme le fichier xml contient a la fois le texte les images etc... je ne peut pas juste formatter le xml pour avoir le texte il faut absolument prendre que ce qui ce trouve entre <w:t>et</w:t>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
     xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
     xmlns:wdr="http://schemas.microsoft.com/office/officeart/2005/8/wddr"
     xmlns:ve="http://schemas.microsoft.com/winfx/2005/06/markup-compatibility" 
     xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:o12="http://schemas.microsoft.com/office/2004/7/core"
     xmlns:m="http://schemas.microsoft.com/office/omml/2004/12/core"
     xmlns:r="http://schemas.microsoft.com/office/2005/11/relationships"
     xmlns:w10="urn:schemas-microsoft-com:office:word"
     xmlns:v="urn:schemas-microsoft-com:vml"
     xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" 
     xmlns:w="http://schemas.microsoft.com/office/word/2005/10/wordml"
     xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
     xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core">
     
    <w:docDefaults>
    <w:rPrDefault>
     <w:rPr>
       <w:rFonts w:asciiTheme="minorAscii" w:fareastTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi"/>
       <w:sz w:val="22"/><w:szCs w:val="22"/>
       <w:lang w:val="FR" w:fareast="EN-US" w:bidi="AR-SA"/>
     </w:rPr>
     </w:rPrDefault>
     
    <w:pPrDefault>
        <w:pPr><w:spacing w:after="200" w:line="276" w:lineRule="auto"/></w:pPr>
    </w:pPrDefault>
     
    </w:docDefaults>
     
    <w:body>
     <w:p w:rsidR="00F16F3E" w:rsidRDefault="00601F5A">
        <w:r>
         <w:t xml:space="preserve">Bonjour </w:t>
        </w:r>
     </w:p>
     <w:sectPr w:rsidR="00F16F3E" w:rsidSect="00F16F3E">
     <w:pgSz w:w="11906" w:h="16838"/>
     <w:pgMar w:top="1417" w:right="1417" w:bottom="1417" w:left="1417" w:header="708" w:footer="708" w:gutter="0"/>
     <w:cols w:space="708"/>
     <w:docGrid w:linePitch="360"/>
     </w:sectPr>
    </w:body>
    </w:wordDocument>
    merci

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Apres fouille dans mes vieux script, j'en ai trouvé un qui peux déjà t'aider
    tu dois installer libxml-perl
    puis change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $mon_fichier = "le_nom_de_ton_fichier.xml";
    Essaye de t'en inspirer pour faire ton script. celui ci print Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #!/usr/bin/perl -w
    use strict;
    use Carp;
    package MyHandler;
     
    my $balise = "no";
      sub new { 
        my ($type) = @_;
        return bless {}, $type; 
      }
     
      sub start_element { 
        my ($self, $el) = @_; 
        if ($el->{Name} eq "w:t"){
          $balise = "yes";
        }
      }
      sub end_element { 
        my ($self, $el) = @_;
        if ($el->{Name} eq "w:t"){
          $balise = "no";
        }
      }
      sub characters { 
        my ($self, $a) = @_;
        #$b =~ s/\&/\&amp\;/g;
        $a =~ s/&lt;/\&lt\;/g;
        if ($balise eq "yes"){
          print $a->{Data}."\n"; 
        }
      }
     
     
    #########################################################
      package main;
      use strict;
      use XML::Parser::PerlSAX;
      import MyHandler;
      my $my_handler = MyHandler->new;
      my $parser = XML::Parser::PerlSAX->new( Handler => $my_handler );
      my $mon_fichier = "le_nom_de_ton_fichier.xml";
      die "I need an XML file as argument" unless $mon_fichier;
      $parser->parse( Source => { SystemId => $mon_fichier } );
    voilà

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 74
    Par défaut
    Merci pour ton aide djibril, ton script fonctionne mais j'ai un problème qui vient peut-être meme pas de ton script, quand je lance le parsing de mon fichier xml j'obtient par moment le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wide character in print
    je ne voie vraiment pas pourquoi perl me dit sa mon fichier n'a rien de

    Pour info je suis sous xp pro

    merci

Discussions similaires

  1. probleme de parser XML Safari / Chrome
    Par ju0123456789 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 12/01/2010, 17h49
  2. Perl XML::Parser probleme installation
    Par morphee_xxx dans le forum Modules
    Réponses: 4
    Dernier message: 11/04/2009, 14h54
  3. [JAXP] com.sun.xml.parser.ValidatingParser
    Par yolepro dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 05/11/2008, 15h36
  4. [SimpleXML] probleme pour parser un fichier XML
    Par gilles974 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 27/03/2008, 10h01
  5. [JDOM] Probleme pour parser un xml
    Par amine_en_france dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/01/2008, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo