如何使用XML :: Simple访问Perl中嵌套XML结构中的深层数据?

时间:2009-06-22 12:12:07

标签: xml perl xml-simple

我正在使用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的值?

1 个答案:

答案 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是非常宝贵的。