Wie kann ich den Zugriff auf Attribute und Elemente von XML::LibXML Perl?

Ich habe Schwierigkeiten zu verstehen /Verwendung von name spaces mit XML::LibXML Paket in Perl. Ich kann auf ein element erfolgreich, aber kein Attribut. Ich habe folgenden code, welcher auf eine XML-Datei (http://pastebin.com/f3fb9d1d0).

my $tree = $parser->parse_file($file); # parses the file contents into the new libXML object.
my $xpc = XML::LibXML::XPathContext->new($tree); 
$xpc->registerNs(microplateML => 'http://moleculardevices.com/microplateML');   

Ich dann versuchen, Zugriff auf ein element mit der Bezeichnung common-name und ein Attribut mit dem Namen name.

foreach my $camelid ($xpc->findnodes('//microplateML:species')) {
  my $latin_name = $camelid->findvalue('@name');   
  my $common_name = $camelid->findvalue('common-name');  
  print "$latin_name, $common_name" ;
}

Aber nur die lateinischen Namen (@name) ausgedruckt werden, der gemeinsame name nicht. Was mache ich falsch und wie bekomme ich den common-name drucken?

Was bedeutet das @ - Namen in diesem Fall zu tun? Ich vermute, es ist ein array, und dass Attribute sollten in ein array-wie kann es mehr als einen, aber-Elemente (wie common-name) sollte nicht sein, da sollte es nur eins sein?

Habe ich die Beispiele hier: http://www.xml.com/pub/a/2001/11/14/xml-libxml.html
und hier: http://perl-xml.sourceforge.net/faq/#namespaces_xpath, und zu versuchen, Ihrem Beispiel Kamel-Drehbuch-arbeiten mit der my-namespace, daher der seltsame namespace.

InformationsquelleAutor John | 2010-01-10

Schreibe einen Kommentar