我正在使用XML :: Simple,我在变量$ xmldata中有以下XML结构,我需要通过Perl代码访问它。
<root>
<a>sfghs</a>
<b>agaga</b>
<c>
<c1>sgsfs</c1>
<c2>sgsrsh</c2>
</c>
<d>
<d1>agaga</d1>
<d2>asgsg</d2>
</d>
</root>
我可以使用以下代码访问a和b的值:
$aval = $xmldata->{a}[0];
$bval = $xmldata->{b}[0] ;
现在,我的问题是:如何获得say,d2的值?
答案 0 :(得分:5)
鉴于您的上述内容,我假设您已启用ForceArray标志。 嵌套键使用引用存储为哈希值。
因此,要访问'd2',您需要使用:
my $d2val = $xmldata->{d}[0]->{d2}[0];
(或我的偏好)
my $d2val = $xmldata->{d}->[0]->{d2}->[0];
(因为它使deref显而易见)
显然,你走的越深,这就越可怕。这是我几乎总是建议XML::LibXML和XPath而不是XML :: Simple的原因之一。 XML :: Simple很快变得不简单。 XML::Simple docs解释各种选项如何影响此布局。
当您想要了解数据的布局方式时,Data::Dumper是非常宝贵的。