Leser: 24
1
2
3
4
5
6
7
8
[root@alterserver tmp]# perl test.pl
->0815<-
[root@alterserver tmp]#
...
root@neuerserver:/tmp# perl test.pl
Can't call method "getAttribute" on an undefined value at test.pl line 9.
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use XML::LibXML; use XML::XPath; $parser = new XML::LibXML; my $doc = $parser->parse_file("/tmp/test.xml"); my $root = $doc->getDocumentElement; my @node = $root->getElementsByTagName('TEST/VERSION/BLAH'); $Version = uc($node[0]->getAttribute('VERSION')); print "->$Version<-\n";
1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<XMLFILE>
<TEST>
<VERSION>
<BLAH DATE="1.1.2010" VERSION="0815"/>
</VERSION>
</TEST>
</XMLFILE>
2010-07-26T01:03:57 murphyIch würde sagen, das Beispielprogramm verhält sich mit einer aktuellen Version von LibXML ganz exakt so, wie es sollte und wie man das erwarten würde.
Um eine bestimmte Struktur im XML-Dokument zu dekonstruieren, was vermutlich der eigentliche Sinn des Beispielcodes ist, wäre die Verwendung von XPath angebracht — dazu könnte man beispielsweise einfach den Methodenaufruf von getElementsByTagName durch findnodes ersetzen.
QuoteIm Übrigen wäre noch anzumerken, dass XML::LibXML bereits Unterstützung für XPath mitbringt, und das Einbinden des nicht verwendeten Moduls XML::XPath im Beispielcode nicht sinnvoll ist.
2010-07-26T09:18:23 rumpi46[...]
QuoteIm Übrigen wäre noch anzumerken, dass XML::LibXML bereits Unterstützung für XPath mitbringt, und das Einbinden des nicht verwendeten Moduls XML::XPath im Beispielcode nicht sinnvoll ist.
Aber es kann nichts nachteiliges passieren wenn es dennoch drinnen steht oder?