Je vais légèrement complexifié mon XML, si j'ai un souci, je le posterai ici.
Je vais légèrement complexifié mon XML, si j'ai un souci, je le posterai ici.
- 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 !
Bon, en rajoutant une profondeur dans mon XML, ça ne fonctionne plus :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="ISO-8859-1"?> <synopsis> <paragraph> Ce tutoriel a pour but de vous <u>expliquer</u> en quelques lignes comment <i><b>concevoir</b></i> un plugin <b>Nagios</b> respectant les normes <b>Nagios</b> avec <b>Perl</b>.<br/><font color="#800040">cvcv</font> </paragraph> </synopsis>
J'obtiens ce message d'erreur : cannot paste an element that belongs to a tree at D:\Ooo\odf\jmg.pl line 36
Code : Sélectionner tout - Visualiser dans une fenêtre à part $contexte->append_element($twig_paragraph);
- 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 !
Bon je sèche !! Sachant que j'aurais plus d'imbrications![]()
- 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 !
Je suppose que tu as visualisé ce que contenait $twig_paragraph avant l'appel à append_element ?
Voici le procédure :Le print affiche bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 sub xml_paragraph { my ( $twig, $twig_paragraph ) = @_; print $twig_paragraph->text; $twig_paragraph->set_tag('text:p'); bless $twig_paragraph, odf_paragraph; $contexte->append_element($twig_paragraph); return; }Par contre après le bless bless $twig_paragraph, odf_paragraph;, je ne sais pas vraiment comment afficher le contenu .Ce tutoriel a pour but de vous expliquer en quelques lignes comment concevoir un plugin Nagios respectant les
normes Nagios avec Perl.cvcv
- 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 !
Voici un autre exemple :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="ISO-8859-1"?> <synopsis> <paragraph> Ce tutoriel a pour but de vous <u>expliquer</u> en quelques lignes comment <i><b>concevoir</b></i> un plugin <b>Nagios</b> respectant les normes <b>Nagios</b> avec <b>Perl</b>.<br/><font color="#800040">cvcv</font> </paragraph> </synopsis>
Procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 sub xml_paragraph { my ( $twig, $twig_paragraph ) = @_; print "AVANT : ",$twig_paragraph->text; $twig_paragraph->set_tag('text:p'); bless $twig_paragraph, odf_paragraph; print "APRES : ",$twig_paragraph->text; $contexte->append_element($twig_paragraph); return; }AVANT :
Ce tutoriel a pour but de vous expliquer en quelques lignes comment concevoir un plugin Nagios respectant les
normes Nagios avec Perl.cvcvAPRES :
Ce tutoriel a pour but de vous expliquer en quelques lignes comment concevoir un plugin Nagios respectant les
cannot paste an element that belongs to a tree at D:\Ooo\odf\jmg.pl line 42
at D:\Ooo\odf\jmg.pl line 26
at D:\Ooo\odf\jmg.pl line 26
normes Nagios avec Perl.cvcv
- 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 !
Remarque : tu devrais utiliser warn au lieu de print, ce qui évite le mélanger entre les messages de debug et les messages de warning de perl.
Le problème ne se situe peut-être pas dans $twig_paragraph mais dans $contexte ?
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 sub xml_paragraph { my ( $twig, $twig_paragraph ) = @_; warn "AVANT : ",$twig_paragraph->text,"\n"; $twig_paragraph->set_tag('text:p'); bless $twig_paragraph, odf_paragraph; warn "APRES TWIG : ",$twig_paragraph->text,"\n"; warn "APRES : get_paragraph : ", $contexte->get_paragraph(position => -1)->get_text,"\n"; $contexte->append_element($twig_paragraph); return; }Ligne 43 = apprendAVANT :
Ce tutoriel a pour but de vous expliquer en quelques lignes comment concevoir un plugin Nagios respectant les normes Nagios avec Perl.cvcv
APRES TWIG :
Ce tutoriel a pour but de vous expliquer en quelques lignes comment concevoir un plugin Nagios respectant les normes Nagios avec Perl.cvcv
APRES : get_paragraph :
cannot paste an element that belongs to a tree at D:\Ooo\odf\jmg.pl line 43
at D:\Ooo\odf\jmg.pl line 26
at D:\Ooo\odf\jmg.pl line 26
- 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 !
Je comprends pas trop pourquoi avec un niveau de plus dans le XML, ça lui pose souci. Là c'est comme s'il ne reconnaissait pas le paragraphe.
- 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 !
Ton get_paragraph ne retourne rien... c'est qu'il est vide ?
Autre idée : plutôt que de re-bénir (bless again) $twig_paragraph, ne vaudrait-il pas mieux créer un nouvel objet odf_paragraph avec $twig_paragraph->text() ?
Bon pour get_paragraph vide, en fait c'est normal vu que le paragraphe n'a pas été rattaché avec append. Il donne le même résultat sur le XML à 1 niveau de profondeur.
- 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 !
Bah si je fais ça (ce que j'ai fait au tout début), on revient à mon problème initial pour pouvoir identifier et modifier le styles des données entre balise <b>.
jmg avait donné cette solution avec bless qui resolve le souci, mais ça ne fonctionne pas dès qu'il y a plusieurs niveau dans le XML, ce qui est le cas de tous mes fichiers XML (sinon ça n'a pas de sens)
- 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 !
ou bien, il faudrait trouver un moyen avec XML::Twig de pouvoir isoler certaines positions. Par exemple :
Il faudrait que je sois capable de trouver que philou est en position 9 dans le texte bonjour philou et jmg afin d'utiliser la méthode set_span d'ODF
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part <paragraph>bonjour <b>philou</b> et jmg</paragraph>
- 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 !
Et si tu créais une nouvelle instance d'XML::Twig avec juste le contenu de <paragraph> comme contenu à parser ? (je sais, c'est lourd, mais bon...).
C'est une idée, mais comme le XML peut avoir 1000 lignes et beaucoup d'imbrications. Mais bon, c'est une idée que je vais creuser, elle peut être pas mal.
- 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 !
Ca te permettra peut-être d'identifier ce qui ne convient pas.
Autre idée : dans ton $twig_paragraph, il y a sans doute une référence au tag parent. Essaye de la supprimer avant de re-bénir en odf_paragraph, à moins que XML::Twig sache détacher un sous-arbre de son arbre principal, ce qui serait encore mieux.
Je vais creuser 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 !
Je m'éclipse jusqu'à lundi matin. Bon week-end.
Bon, je n'ai pas tout testé mais tu as vu juste philou !!!
J'ai fait ceci :
en utilisant cut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 sub xml_paragraph { my ( $twig, $twig_paragraph ) = @_; $twig_paragraph->cut; $twig_paragraph->set_tag('text:p'); bless $twig_paragraph, odf_paragraph; $contexte->append_element($twig_paragraph); return; }ça à l'air de fonctionner. Je poursuis mes tests.cut
Cut the element from the tree. The element still exists, it can be copied or pasted somewhere else, it is just not attached to the tree anymore.
Note that the "old" links to the parent, previous and next siblings can still be accessed using the former_* methods
- 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 !
- 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 !
Partager