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/
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
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 ;
- 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 !
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
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 xml : 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 <?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éponse
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 #!/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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
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 xml : 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 <?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>
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Re -bonjour
le fichier XML est le suivant :
et je cherche a modifier les balise <Prenom> par <Prenom1><Prenom2><Prenom3>
Code xml : 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 <?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 : 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 <?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 xml : 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 <?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 : 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 #!/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 xml : 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 <?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>
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager