Bonjour a tous,
j'ai beau cherché de la doc sur du XmlTwig en français, mai je trouve qu'en anglais, y aurait'il parmi vous qui pe m'indique ou je peux trouvé de la doc en français vue que moi et l'anglais ca fé 2.
merci d'avance
bonne journée
Bonjour a tous,
j'ai beau cherché de la doc sur du XmlTwig en français, mai je trouve qu'en anglais, y aurait'il parmi vous qui pe m'indique ou je peux trouvé de la doc en français vue que moi et l'anglais ca fé 2.
merci d'avance
bonne journée
Tu peux déjà consulter l'excellent tutoriel de Djibril:
http://djibril.developpez.com/tutoriels/perl/perl-xml/
merci LOLO
c'est déjà fais
Bonjour,
Déjà quelques remarques très importantes :
- lorsque vous cherchez la documentation d'un module, elle ne se trouve principalement que sur le site du CPAN et c'est toujours en anglais. Il va falloir s'y faire car c'est la langue de référence en informatique. Si l'anglais et vous ça fait deux, bah va falloir s'améliorer car le code fourni fera également deux avec vous :aie: ;
- mon article cité ci-dessus par LOlo78 pourra vous donner un premier aperçu du module. Vous y trouverez en fin d'article une liste de liste de liens dont celui du créateur du module qui contient une documentation avec des exemples, mais c'est aussi en anglais ;).
La seule chose que vous pourrez avoir en français est de l'aide sur ce forum, ce qui est déjà très intéressant.
Bonne Lecture !
Bonjour,
je cherche a modifier le nom de quelques balise, c-a-d, dans la balise <Prenoms> j'ai plusieur balise <Prenom> a l'interieur et j'aimerai modifier le nom de ses dernier pour avoir <Prenom1><Prenom2>...
Code:
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 <?xml version="1.0" encoding="UTF-8"?> <Lettre> <Enveloppe> <ligne>01</ligne> </Enveloppe> <Individu> <Demande> <Personne> <Noms> <NomF>foot</NomF> <NomU>ball</NomU> </Noms> <Prenoms> <Prenom>AAAA</Prenom> <Prenom>BBBB</Prenom> <Prenom>CCC</Prenom> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> </Lettre>
pour cela j'ai ecrit le code suivant mai ca ne marche pas, je sais pas comment utilisé la balise children et comment atteindre la balise <Prenoms> en profondeur: mon code perl le voila
merci d'avance de vos réponseCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #!/usr/bin/perl use XML::Twig; my $t= XML::Twig->new(); $t->parsefile( 'fichier.xml'); my $root= $t->root; my @Individu = $root->children ( 'Individu'); foreach my $Individu (@Individu) { $i = 1; foreach my $Prenom ( $Individu->children('Demande')->children('Personne')->children('Prenoms')->children('Prenom')) { $Prenom->set_tag( 'Prenom'.$i); $i = $i+1; } # turn them into p } open(PF, "> out.xml") or die "can't open file $!\n"; $t->print(\*PF); # output the document
Bonjour ,
djibril, dans l'exemple que vous traité, il est constitué de 3Niveau (annuaire,personne,langage), mais moi je comprend pas comment on peut atteindre un niveau encore plus haut vue que j'ai un fichier avec 6 ou 7 niveau, je veux changer le nom d'une balise qui est au 6eme niveau, j'écris le code suivant :
mai ca na pas l'air de fonctionné.Code:
1
2
3
4
5
6
7
8 my @Individu = $root->children ( 'Individu'); $i = 1; foreach my $Prenom ( $Individu->children('Demande')->children('Personne')->children('Prenoms')->children('Prenom')) { $Prenom->set_tag( 'Prenom'.$i); $i = $i+1; }
quelqu'un pourrez me donnée quelque indication
merci a tous
Bonjour,
Pouvez-vous me montrer votre fichier XML et me redire ce que vous souhaitez faire ?
Il y a peut-être une façon simple de procéder pour réaliser votre programme avec XML::Twig.
Lorsque vous poster du code ou des exemples, merci de les indenter. Cela permet d'avoir une meilleure lisibilité.
Voici donc votre fichier XML :
Vous souhaitez le transformer en quel fichier ?Code:
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 <?xml version="1.0" encoding="UTF-8"?> <Lettre> <Enveloppe> <ligne>01</ligne> </Enveloppe> <Individu> <Demande> <Personne> <Noms> <NomF>foot</NomF> <NomU>ball</NomU> </Noms> <Prenoms> <Prenom>AAAA</Prenom> <Prenom>BBBB</Prenom> <Prenom>CCC</Prenom> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> </Lettre>
Re -bonjour
le fichier XML est le suivant :
et je cherche a modifier les balise <Prenom> par <Prenom1><Prenom2><Prenom3>Code:
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 <?xml version="1.0" encoding="UTF-8"?> <Lettre> <Enveloppe> <ligne>02</ligne> </Enveloppe> <Individu> <Demande> <Personne> <Noms> <NomF>foot</NomF> <NomU>ball</NomU> </Noms> <Prenoms> <Prenom>AAAA</Prenom> <Prenom>BBBB</Prenom> <Prenom>CCC</Prenom> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> <Individu> <Demande> <Personne> <Noms> <NomF>Nom1</NomF> <NomU>Nom2</NomU> </Noms> <Prenoms> <Prenom>ZZZZZ</Prenom> <Prenom>UUUUU</Prenom> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> </Lettre>
merci de ton aide
je cherche a le modifier en ce fichier :
Code:
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 <?xml version="1.0" encoding="UTF-8"?> <Lettre> <Enveloppe> <ligne>02</ligne> </Enveloppe> <Individu> <Demande> <Personne> <Noms> <NomF>foot</NomF> <NomU>ball</NomU> </Noms> <Prenoms> <Prenom1>AAAA</Prenom1> <Prenom2>BBBB</Prenom2> <Prenom3>CCC</Prenom3> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> <Individu> <Demande> <Personne> <Noms> <NomF>Nom1</NomF> <NomU>Nom2</NomU> </Noms> <Prenoms> <Prenom1>ZZZZZ</Prenom1> <Prenom2>UUUUU</Prenom2> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> </Lettre>
Je t'ai fait un programme simple très optimisé au cas où tes fichiers XML seraient gros.
Le principe est le suivant : Je ne parcours que la balise <Prenom> (chunk by chunk) => rapidité, mémoire utilisée de façon pertinente. Ensuite, sachant que dans la balise <Prenoms>, je n'ai que des balises <Prenom>, je vais juste récupérer le niveau de position de ma balise via la méthode pos du module et je renomme ma balise.
XML::Twig est un module très très puissant car il possède énormément de méthodes permettant de jouer avec ses fichiers XML. Il faut juste être patient pour bien décortiquer la documentation.
Fichier XML d'entrée :
Code:
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 <?xml version="1.0" encoding="UTF-8"?> <Lettre> <Enveloppe> <ligne>02</ligne> </Enveloppe> <Individu> <Demande> <Personne> <Noms> <NomF>foot</NomF> <NomU>ball</NomU> </Noms> <Prenoms> <Prenom>AAAA</Prenom> <Prenom>BBBB</Prenom> <Prenom>CCC</Prenom> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> <Individu> <Demande> <Personne> <Noms> <NomF>Nom1</NomF> <NomU>Nom2</NomU> </Noms> <Prenoms> <Prenom>ZZZZZ</Prenom> <Prenom>UUUUU</Prenom> <Prenom>aaa</Prenom> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> </Lettre>
Code Perl :
Fichier de sorti :Code:
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 #!/usr/bin/perl use strict; use warnings; use XML::Twig; my $fichier_xml = 'test.xml'; my $output_xml = 'output.xml'; my $twig = XML::Twig->new( twig_handlers => { Prenom => \&gestion_dun_prenom, }, pretty_print => 'indented', ); $twig->parsefile($fichier_xml); open( my $fh, '>', $output_xml) or die "Impossible de créer le fichier XML $output_xml : $!"; $twig->print($fh); close $fh; sub gestion_dun_prenom { my ($twig, $twig_prenom) = @_; # On renomme la balise en récuprant son niveau de position $twig_prenom->set_tag( $twig_prenom->name . $twig_prenom->pos ); return; }
Code:
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 <?xml version="1.0" encoding="UTF-8"?> <Lettre> <Enveloppe> <ligne>02</ligne> </Enveloppe> <Individu> <Demande> <Personne> <Noms> <NomF>foot</NomF> <NomU>ball</NomU> </Noms> <Prenoms> <Prenom1>AAAA</Prenom1> <Prenom2>BBBB</Prenom2> <Prenom3>CCC</Prenom3> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> <Individu> <Demande> <Personne> <Noms> <NomF>Nom1</NomF> <NomU>Nom2</NomU> </Noms> <Prenoms> <Prenom1>ZZZZZ</Prenom1> <Prenom2>UUUUU</Prenom2> <Prenom3>aaa</Prenom3> </Prenoms> <Naissance> <Date>2012-06-20</Date> <Lieu> <Localite code="75000"/> <Pays>France</Pays> </Lieu> </Naissance> <Sexe>Homme</Sexe> </Personne> </Demande> </Individu> </Lettre>
ca marche super :ccool:
merci djibril