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 |
Partager