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

XML/XSL et SOAP Discussion :

copier plusieurs fichiers XML en un seul


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Par défaut copier plusieurs fichiers XML en un seul
    Bonjour,

    Je cherche à copier des fichiers XML dans un seule XML en utilisant XML:OM.

    j'ai une erreur ds mon script, je pense ds la fonction qui parcour les dossiers.
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
     
    use strict;
     use warnings;
     use XML::DOM;
     
     sub importNode($$); # prédéclaration 
     # pour permettre le contrôle du prototype lors de l'appel récursif
     
    sub XMLVide{
     
    #l encodage du XML 
    my $docBut = XML::DOM::Document->new();
    $docBut->setXMLDecl($docBut->createXMLDecl("1.0", "UTF-8"));
     
    my $racineXml = 'daterecupe';
     
    #laracine
     my $racine = $docBut->createElement($racineXml);
    $docBut->appendChild($racine);
     
    return $docBut;
    }#fin consDocXMLVide
     
     
    sub importNode($$){ # élément à copier, Document_but
     my ($src, $doc_but) = @_;
     
         my $res;
     
         if( $src->getNodeName() eq '#text' ){
             $res = $doc_but->createTextNode($src->getData());
         }elsif( $src->getNodeName() eq '#comment' ){ # il y en a quelques-uns dans les exemples...
             $res = $doc_but->createComment($src->getData());
         }else{
         # c'est un élément
             $res = $doc_but->createElement($src->getTagName());
             my $attrs = $src->getAttributes();
             my $k = $attrs->getLength();
             for( my $i = 0; $i < $k; $i++ ){
                 my $attr = $attrs->item($i);
                 $res->setAttribute($attr->getName(), $attr->getValue());
             }
             my @children = $src->getChildNodes();
             foreach my $child ( @children ){
                 $res->appendChild(importNode($child, $doc_but));
             }
         }
         return $res;
     }#importNode
     
    sub parcoursarborescencefichiers {##Procedure de parcours 
        my ($path, $fichOut, $But, $docBut) = @_;
    my $docBut = XMLVide();
        opendir(DIR, $path) or die "can't open $path: $!\n"; #On ouvre le répertoire
     
        my @files = readdir(DIR);
        closedir(DIR);
        foreach my $file (@files) {
    #         print "$file\n"; #les noms des fichiers
    	next if $file =~ /^\.\.?$/;
            $file = $path."/".$file; 
     
            if (-d $file) { 
    		if($file=~/www.alaswaq.net\/\/([0-9]+)$/){ 
    			&parcoursarborescencefichiers($file);
    		}
            }
            if (-f $file) { 
    #  		if($file =~/(.+)-decoup_XML\.xml/){#pr traiter les fichiers xml seulement
    		my $parseur = XML::DOM::Parser->new();
     		my $docSrc = $parseur->parsefile($file);
    		print "$docSrc\n";
     
    # 		my $docBut = XMLVide();
     		$But = importNode($docSrc->getDocumentElement(), $docBut);
    # 		$docBut->appendChild($But);
    		print "But : $But\n";
     
    #   		open(SORTIE,">:utf8", "VV.xml");
    #    		print(SORTIE $docBut->toString());
     
    # 		}
    	}
    print "But2: $But\n";
    $docBut->appendChild($copy);
     
      	open(SORTIE,">:utf8", "VV.xml");
       	print(SORTIE $docBut->toString());
     
        }
    }
    parcoursarborescencefichiers($ARGV[0]); #appel de la fonction de parcour des dossiers
    mon dossier contient quelque fichiers XML
    il m affiche une msg d'erreur suivant:
    XML:OM:OMException(Code=3, Name=HIERARCHY_REQUEST_ERR, Message=document can have only one Element

    j'ai réussi avec deux fichiers, en les passant les deux en parametre mais en boucle je n'arrive pas à trouver le problème.

    Merci de m'aider.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ma maîtrise de perl approche le zéro absolu, mais le message d'erreur a l'air d'indiquer que tu essaies d'avoir plusieurs éléments racines, alors qu'un fichier XML ne peut en avoir qu'un.
    Cette impression se confirme quand je te vois faire du appendChild() sur quelque chose qui semble être le document destination directement, plutôt que sur sa racine.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Copier plusieurs Fichiers Excel dans un seul
    Par willoweiss dans le forum Excel
    Réponses: 1
    Dernier message: 10/12/2013, 09h52
  2. Transformer plusieurs fichiers xml en un seul
    Par Ya7yaKech dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/01/2009, 13h52
  3. Créer plusieurs fichiers XML à partir d'un seul
    Par TooKool dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 15/09/2008, 09h30
  4. copier plusieurs fichiers texte dans un seul fichier texte
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/08/2008, 20h21
  5. Copier plusieurs fichier txt dans un seul fichier
    Par vieri31 dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/05/2008, 13h57

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