我有这样的 XML 数据
<Root>
<Bag Identifier="1">
<Code Amount="0" Code="XA" Conversion="0" Currency="INR" Desc="" Id="1"/>
</Bag>
<Bag Identifier="2">
<Code Amount="21" Code="XA" Conversion="0" Currency="INR" Desc="" Id="2"/>
</Bag>
</Root>
我想解析它并创建一个 Perl 哈希,如下所示。这Identifier
每个的属性Bag
元素应该是主哈希键。
'2' => {
'Amount' => "21",
'Code' => "XA",
'Currency' => "INR",
}
'1' => {
'Amount' => "0",
'Code' => "XA",
'Currency' => "INR",
}
这是我的 Perl 代码
my $parser = XML::LibXML->new();
my $xml_doc = $parser->parse_string($response);
my $test_node = $xml_doc->findnodes('//Bag/');
print Dumper($test_node);
print $test_node->find('@Id')->string_value();
如何创建我所描述的哈希值?
这个程序按照你的要求做。它从以下位置读取示例数据的副本DATA
文件句柄,并使用Data::Dump
显示结果数据结构。
use strict;
use warnings;
use XML::LibXML;
my $data = XML::LibXML->load_xml(IO => \*DATA);
my %data;
my @bags = $data->findnodes('/Root/Bag');
for my $bag (@bags) {
my $id = $bag->getAttribute('Identifier');
my ($code) = $bag->getChildrenByTagName('Code');
my %item;
for my $attr (qw/ Amount Code Currency /) {
$item{$attr} = $code->getAttribute($attr);
}
$data{$id} = \%item;
}
use Data::Dump;
dd \%data;
__DATA__
<Root>
<Bag Identifier="1">
<Code Amount="0" Code="XA" Conversion="0" Currency="INR" Desc="" Id="1"/>
</Bag>
<Bag Identifier="2">
<Code Amount="21" Code="XA" Conversion="0" Currency="INR" Desc="" Id="2"/>
</Bag>
</Root>
output
{
1 => { Amount => 0, Code => "XA", Currency => "INR" },
2 => { Amount => 21, Code => "XA", Currency => "INR" },
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)