-
[XML]: module XML::smart
Bonjour,
Je suis nouveau sur ce forum.
Depuis qq jours, je me casse les dents sur une fonction "path" du module XML:Smart. Je cherche à récupérer le chemin d'un contenu sous ce format-là "/people/personne[1]/nom". Mais je n'arrive pas à utiliser la fonction "path".
Pour être un peu plus précis,
dans mon fichier xml de contact, je cherche un nom pour cela je filtre depuis le hanlder "char_handler". Une fois que le nom est trouvé, je souhaite connaître le chemin.
Pourrriez-vous me dire comment je pourrais faire pour récupérer le chemin avec la fonction "path" ou d'une autre manière?
Merci bp
Nino
-
Je suppose qu'on parle du handler "on_char" ? Dans ce cas le second argument étant un pointeur, vous pouvez appeler la méthode path() sur lui, non ?
Qu'avez vous essayé qui ne marche pas ?
--
Jedaï
-
Oui tout à fait "on_char",
programme principal:
[...]
$p = new XML::Smart('peoplexml.xml',
on_start => \&start_handler,
on_end => \&end_handler,
on_char => \&char_handler
);
[..]
fonction:
sub char_handler
{
my ($tag , $pointer , $pointer_back , $content) = @_;
if($$content eq 'LE YHUELIC')
{ print STDOUT "je l'ai trouvé ==> $$content\n";}
$result=$p->path($pointer) ;
print STDOUT "result=$result\n";
} # End char_handler
quand j'exécute le script, le terminal m'affiche ce msg:
"Can't call method "path" on an undefined value at line [..]" --> $result=$p->path($pointer) ;
Je souhaiterais connaître le path afin d'utiliser son noeud pour aller lire l'age de la personne trouvée.
<people>
<personne>
<nom>BRIN</nom>
<prenom>Nicolas</prenom>
<age>30ans</age>
</personne>
<personne>
<nom>LE YHUELIC</nom>
<prenom>Solenn</prenom>
<age>29ans</age>
</personne>
</people>
Si vous avez une idée...
Merci.
Nicolas