Bonjour,
Je rencontre un problème pour parser un fichier XML avec la librairie LibXML. J'ai essayé de le faire sur un exemple simple.
Voici le fichier XML
Voici mon code.pm
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 <library> <book> <title>Perl Best Practices</title> <author>Damian Conway</author> <isbn>0596001738</isbn> <pages>542</pages> </book> <book> <title>Guitar for Dummies</title> <author>Mark Phillips</author> <author>John Chappell</author> <isbn>076455106X</isbn> <pages>392</pages> </book> </library>
Et donc l'erreur que je rencontre est la suivante:
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 strict; use warnings; my $filename = '/home/user/Modules/library.xml'; use XML::LibXML; my $parser = XML::LibXML->new(); my $doc = $parser->parse_file($filename); foreach my $book ($doc->findnodes('/library/book')) { my($title) = $book->findnodes('./title'); }
lost node at /usr/lib/perl5/vendor_perl/5.10.1/i386-linux-thread-multi/XML/LibXML.pm line 1274
Cette ligne correspond à la ligne my @nodes = $node -> _findnodes($xpath) de la fonction:
Voilà je sèche un peu pour comprendre le problème ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 sub findnodes { my ($node,$xpath) = @_; my @nodes = $node -> _findnodes($xpath); if (wantarray) { return @nodes; } else { return XML::LibXML::NodeList->new_from_ref(\@nodes,1); } }
Merci d'avance pour votre aide.
Partager