perl, libxml xpath : wie man ein element über ein Attribut in diesem Beispiel .xml-Datei

Ich würde gerne Ihre Hilfe in den folgenden :

gegeben .xml-Datei :

<network>
    <netelement>
            <node pwd="KOR-ASBG" func="describe_SBG_TGC">
                    <collection category="IMT" dir="Stream_statistics"></collection>
                                    </node>
    </netelement>
    <netelement>
            <node pwd="ADR-ASBG" func="describe_SBG_TGC">
                    <collection category="IMT" dir="Stream_statistics"></collection>
                    <collection category="IMT" dir="Proxy_registrar_statistics_ACCESS"></collection>
            </node>
    </netelement></network>

Was ich möchte zu tun ist, um das element mit dem Attribut "KOR-ASBG", zum Beispiel,
aber nur mithilfe von XPath.

Ich geschrieben habe das folgende Perl-code :

#!/usr/bin/perl         -w

use             strict ;
use             warnings ;
use             XML::LibXML ;
use             Data::Dump qw(dump) ;


my $dump = "/some_path/_NETELEMENT_.xml" ;
my $parser = new XML::LibXML ; my $doc ;
eval{ $doc = $parser->parse_file($dump) ; } ;
if( !$doc ) { print "failed to parse $dump" ; next ; }
my $root = $doc->getDocumentElement ;

my $_demo = $root->find('/network/netelement/node[@pwd="KOR-ASBG"]') ;
print dump($_demo)."\n" ;

Aber, was es bekommt dispalyed ist :

bless([bless(do{\(my $o = 155172440)}, "XML::LibXML::Element")], "XML::LibXML::NodeList")

Also die Frage wäre, wie bekomme ich die XML-Elements mit dem "pwd" - Attribut (entspricht "KOR-ASBG"), die Verwendung von XPath ?

Danke 🙂

PS. Ich habe auch versucht :

my @_demo = $root->findnodes('/network/netelement/node[@pwd="KOR-ASBG"]') ;
print dump(@_demo)."\n" ;

und was wird es angezeigt wird :

bless(do{\(my $o = 179552448)}, "XML::LibXML::Element")
InformationsquelleAutor user690182 | 2011-10-04
Schreibe einen Kommentar