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
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>
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
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');
  }
Et donc l'erreur que je rencontre est la suivante:
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:
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);
    }
}
Voilà je sèche un peu pour comprendre le problème ...

Merci d'avance pour votre aide .