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 :

[XML-Twig] Problème d'insertion d'un document XML dans un autre


Sujet :

Modules Perl

  1. #1
    eve
    eve est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [XML-Twig] Problème d'insertion d'un document XML dans un autre
    Bonjour,

    je bute depuis 3 jours sur quelque chose qui peut paraître stupide...

    Je ne parviens pas à inclure une partie d'un fichier xml dans un autre, je m'explique:

    fichier xml1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <titre>
    <blabla1></blabla1>
    <delimiter></delimiter>
    <blabla2></blabla2>
    </titre>
    fichier xml2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <header>
    <exemple>
    <variable1>test1</variable1>
    </exemple>
    <exemple>
    <variable2>test2</variable2>
    </exemple>
    </header>
    Or j'aimerais construire le fichier suivant combinant les 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <titre>
    <blabla1></blabla1>
    <delimiter></delimiter>
    <exemple>
    <variable1>test1</variable1>
    </exemple>
    <exemple>
    <variable2>test2</variable2>
    </exemple>
    <blabla2></blabla2>
    </titre>
    -> c'est à dire reprendre mon xml1 et lui insérer le contenu de xml2 (sans les balises root du xml2).


    Voici mon code:
    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
    # xml1
    my $twig = new XML::Twig(pretty_print => 'indented',);
    my $XML1 = "/tmp/xml1.xml";
    # xml2
    my $XML2 = "/tmp/xml2.xml";
    #output
    my $XML3 = "/tmp/xml3.xml";
     
    # ouverture fichier de sortie
    open( my $FhXML3, '>', $XML3 )
        or die("Impossible d'ouvrir le fichier $XML3\n$!");
     
    # on parse le 1 fichier xml
    $twig->parsefile($XML1);
    my $root = $twig->root;
     
    # second fichier xml
    my $twig2 = new XML::Twig(twig_roots => { 'exemple' => '1',}, pretty_print => 'indented',);
    $twig2->parsefile($XML2);
     
    # traitement
    my $root2 = $twig2->root->first_child('exemple');
    my $node = XML::Twig::Elt->new( $root2 );
    $root2->paste( after => $root->first_child('delimiter') );
     
    # ecriture dans fichier
    $twig->print($FhXML3);
     
    # fermeture fichier
    close($FhXML3);

    resultat:
    Il m'affiche le contenu du xml2 mais avec ses balises root (<header></header>), c'est à dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <titre>
    <blabla1></blabla1>
    <delimiter></delimiter>
    <header>
    <exemple>
    <variable1>test1</variable1>
    </exemple>
    <exemple>
    <variable2>test2</variable2>
    </exemple>
    </header>
    <blabla2></blabla2>
    </titre>

    Voyez-vous comment faire?

    J'ai testé de faire des remplacements (avec sub), mais rien n'y fait.


    Merci d'avance pour vos réponses.

  2. #2
    eve
    eve est déconnecté
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    m'en suis sortie (grâce au post http://www.developpez.net/forums/d65...-fichiers-xml/) ..

    voici le code:

    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
      my $XML1 = "/tmp/1.xml";
      my $XML2= "/tmp/2.xml";
      my $XML3 = "/tmp/3.xml";
      open( my $FhXML3, '>', $XML3 )
        or die("Impossible d'ouvrir le fichier $XML3\n$!");
     
      my $twig = new XML::Twig(pretty_print => 'indented',);
      $twig->parsefile($XML1);
      my $root = $twig->root;
      # copy XML tags
      my $twig2 = XML::Twig->new;
      $twig2->parsefile($XML2);
      my $root2= $twig2->root;
      my @nodes2 = $root2->get_xpath('//exemple');
      for my $node2 (@nodes2) {
            my $elem = $node2->copy;
            $elem->paste( after => $root->first_child('delimiter') );
      }
     
      # Ecriture
      $twig->print($FhXML3);
     
      # Fermeture du fichier
      close($FhXML3);

    Merci.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/08/2012, 15h29
  2. [WD14] Problème de lecture d'un document Xml
    Par drogba72 dans le forum WinDev
    Réponses: 2
    Dernier message: 08/01/2012, 20h59
  3. Problème de conception d'un document XML
    Par soso78 dans le forum VB.NET
    Réponses: 0
    Dernier message: 12/06/2009, 12h11
  4. [XSLT]Problème de transformation d'un document XML.
    Par JM_Cholet dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/01/2007, 13h29
  5. [JAVA] Problème supression noeud d'un document XML
    Par vero59 dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/08/2005, 16h12

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