Bonjour à tous,
J'ai un fichier xml de la forme suivante:
<mediawiki>
<page>
<title>page1</title>
<ns>8</ns>
<id>6</id>
<revision>
<id>2621</id>
<parentid>6</parentid>
<timestamp>2005-10-09T01:00:18Z</timestamp>
<contributor>
<username>Chaos</username>
<id>2</id>
</contributor>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve">text1</text>
<sha1>gl8lkltizrxqzwr60fbie01x1lgyurm</sha1>
</revision>
</page>
<page>
<title>page2</title>
<ns>8</ns>
<id>7</id>
<revision>
<id>2619</id>
<parentid>2618</parentid>
<timestamp>2005-10-09T00:56:39Z</timestamp>
<contributor>
<username>Chaos</username>
<id>2</id>
</contributor>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve">text2</text>
<sha1>n8dordcv6ep0jkar48qrkuqky9f5mmo</sha1>
</revision>
</page>
<page>
<title>page3</title>
<ns>8</ns>
<id>6</id>
<revision>
<id>2621</id>
<parentid>6</parentid>
<timestamp>2005-10-09T01:00:18Z</timestamp>
<contributor>
<username>Chaos</username>
<id>2</id>
</contributor>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve">text3</text>
<sha1>gl8lkltizrxqzwr60fbie01x1lgyurm</sha1>
</revision>
</page>
<page>
<title>page4</title>
<ns>8</ns>
<id>7</id>
<revision>
<id>2619</id>
<parentid>2618</parentid>
<timestamp>2005-10-09T00:56:39Z</timestamp>
<contributor>
<username>Chaos</username>
<id>2</id>
</contributor>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve">text4</text>
<sha1>n8dordcv6ep0jkar48qrkuqky9f5mmo</sha1>
</revision>
</page>
</mediawiki>

L'objectif est de récupérer le continu de chaque <page> dans un fichier .txt dont le nom est le texte de la balise <title> et le continu est celui de <text></text>

j'ai fait le code suivant :

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
 
#Extraction des textes arabes#
 
use strict;
use warnings 'all';
use autodie;
use utf8;
use XML::LibXML;
 
 
my $filename = "pages.xml";
 
use constant FICHIER_RESULAT   => 'out.txt';
 
open my $fh_resultat, '>:utf8', FICHIER_RESULAT;
 
 
 
 
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);
my $file;
my @tab_file;
foreach my $page ($xmldoc->findnodes('/mediawiki/page')) {
foreach my $title ($page->findnodes('/mediawiki/page/title')) {
#foreach my $rev ($page->findnodes('/mediawiki/page/revision')) {
#foreach my $text ($rev->findnodes('text/text()')) {
$file = $title->to_literal();
my $newfile = "$file.txt";
push @tab_file, $newfile;
#open(my $out, '>:utf8', $newfile) or die "Unable to open '$newfile' for write: $!";
#my $texte = $text->data;  
#print $out "$text\n"; 
#close $out;
#}
#}
}
}
 
foreach my $page ($xmldoc->findnodes('/mediawiki/page')) {
foreach my $title ($page->findnodes('/mediawiki/page/title')) {
foreach my $val(@tab_file) {
my $titre = $title->to_literal();
my $newfile = "$titre.txt";
if($val eq $newfile) {
foreach my $rev ($page->findnodes('/mediawiki/page/revision')) {
foreach my $text ($rev->findnodes('text/text()')) {
open(my $out, '>:utf8', $val) or die "Unable to open '$val' for write: $!";
my $texte = $text->data;
print $out "$text\n"; 
close $out;
}
}
}
}
}
}
J'ai pu construire les fichiers page1 , page2, page3 et page4 mais ces fichiers contiennent tous text4 !!
Aide SVP.. et merci beaucoup d'avance