3

私は次のxmlを持っています

<?xml version="1.0" encoding="utf-8"?>
<Response>
   <Function Name="GetSomethingById">
      <something idSome="1" Code="1" Description="TEST01" LEFT="0" RIGHT="750" />
   </Function>
</Response>

<something>そして、ノードの属性をハッシュとして必要です。私は以下のようにしようとしています

my $xpc = XML::LibXML::XPathContext->new(
    XML::LibXML->new()->parse_string($xml)   # $xml is containing the above xml
);
my @nodes = $xpc->findnodes('/Response/Function/something');

$nodes[0]->getAttributes私は、何か助けがあるようなものを期待していますか?

4

3 に答える 3

5
my %attributes = map { $_->name => $_->value } $node->attributes();
于 2012-10-10T05:09:48.527 に答える
2

XPATHクエリが間違っているようです-XML'/WSApiResponse/Function/something'のルートノードがそうではResponseなく、検索しているWSApiResponse

XML::LibXML::Node(返されると予想される種類のもの)のドキュメントから、代わりにfindnodes()探す必要がありますmy $attrs = $nodes[0]->attributes()$nodes[0]->getAttributes

于 2012-10-10T04:36:42.217 に答える
0

XML::Simpleはこの種のものに使用します。したがって、XMLファイルがdata.xml

use strict;
use XML::Simple();
use Data::Dumper();

my $xml = XML::Simple::XMLin( "data.xml" );
print Data::Dumper::Dumper($xml);
my $href = $xml->{Function}->{something};
print Data::Dumper::Dumper($href);

注:XML :: Simpleを使用すると、ルートタグは結果ハッシュ自体にマップされます。したがって、$xml->{Response}

于 2012-10-10T04:38:12.893 に答える