輸入文件:SN.xml使用XML ::簡單 - 無法獲得輸出(在HASH)
<?xml version='1.0'?>
<root>
<category cname='Cname1' id='c1'>
<subcat key='3' sname='Subname1' sid='sid1'>
<prod key='1' pname='Productname'>value1</prod>
</subcat>
<subcat key='4' sname='Subname2' sid='sid1'>
<prod key='1' pname='Productname1'>value2</prod>
<prod key='2' pname='Productname2'>value3</prod>
</subcat>
</category>
</root>
我得就像低於輸出
Subname1 -> Productname
Subname2 -> Productname1
Subname2 -> Productname2
我已經嘗試使用下面的代碼hash
use strict;
use warnings;
use XML::Simple;
my $last;
my $sub_catname;
my $filename='SN.xml';
my $xs = XML::Simple->new();
my $config = $xs->XMLin($filename);
my $s_category = $config->{'category'}{'subcat'};
foreach my $key (sort (keys %{$s_category})){
my $subcat_val=$s_category->{$key}{'sname'};
$last=$key;
$sub_catname=$subcat_val;
}
my $prod = $s_category->{$last}{'prod'};
foreach my $key (sort {$a<=>$b} keys %{$prod}){
my $res_prod = $prod->{$key}{'pname'};
print "$sub_catname -> $res_prod\n";
}
我得到空輸出。 我已經嘗試data :: dumper工作正常。我無法使用循環打印我的輸出。 在此先感謝。
你有沒有嘗試用'Data :: Dumper'打印你的數據結構?如果沒有,那就這樣做。 – TLP
my $ xs = XML :: Simple-> new(ForceArray => 1); my $ config = $ xs-> XMLin('SN.xml'); print Dumper $ config;這個工作正常,但不工作在哈希 – Vasanth
您需要'ForceArray => [qw(prod)]',或者您需要使用'ref'來找出您有什麼樣的數據。 XML :: Simple是最難使用的XML :: Parser。 – ikegami