我是perl的新手,并且遇到一个问题,我使用XML :: Simple加载XML,并且我将标记名称作为哈希名称。我想得到以“xsd:schema”名称存储的哈希,但显然$ xsd:schema不起作用。我花了很长时间在谷歌上搜索它,无法找到它。
如何获取该哈希,以便找出关键值?
编辑:
抱歉,我没有很好地解释自己。我想在几个级别的哈希中找出这些键的键和值,但名称xsd:schema导致语法错误:
foreach my $attributes (keys %{ $data{$xsd:schema}{$xsd:element}}){
print "$attributes : ${$data}{$xsd:schema}{$xsd:element}{$attributes}\n";
}
编辑2: 我就是这样做的。
$schemaData = $data->{'xsd:schema'}->{'xsd:element'}->{'xsd:complexType'}->{'xsd:sequence'}->{'xsd:element'}->{'xsd:complexType'}->{'xsd:sequence'}->{'xsd:element'};
print Dumper($schemaData);
foreach my $fieldName (keys %{ $schemaData}){
$fieldType = $schemaData->{$fieldName}->{'type'};
print "$fieldType\n";
}
答案 0 :(得分:10)
使用Data::Dumper可视化复杂的数据结构。
XML :: Simple不会创建新变量,而是创建引用。请参阅Perl Data Structures Cookbook。
use Data::Dumper;
use XML::Simple;
my $x = XMLin(q(<r xmlns:xsd="xsd"><xsd:schema atr="a">a</xsd:schema></r>));
print Dumper $x;
print $x->{'xsd:schema'}{content};
输出:
$VAR1 = {
'xsd:schema' => {
'content' => 'a',
'atr' => 'a'
},
'xmlns:xsd' => 'xsd'
};
a