我正在使用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>
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码访问a和b的值:
$aval = $xmldata->{a}[0];
$bval = $xmldata->{b}[0] ;
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:如何获得say,d2的值?
鉴于您的上述内容,我假设您已启用ForceArray标志.嵌套键使用引用存储为哈希值.
因此,要访问'd2',您需要使用:
my $d2val = $xmldata->{d}[0]->{d2}[0];
Run Code Online (Sandbox Code Playgroud)
(或我的偏好)
my $d2val = $xmldata->{d}->[0]->{d2}->[0];
Run Code Online (Sandbox Code Playgroud)
(因为它使deref显而易见)
显然,你越深入就越可怕.这就是我几乎总是建议使用XML :: LibXML和XPath而不是XML :: Simple的原因之一.XML :: Simple很快变得不简单.XML :: Simple docs解释了各种选项如何影响这种布局.
当您想要了解数据的布局方式时,Data :: Dumper非常有用.