如何使用XML Twig获取数组的属性

时间:2015-12-29 22:02:27

标签: perl xml-parsing xml-twig

我是这样的XML文件:

cars.xml

<root>
    <brand>
        <make i="1" n="Ford">
            <veh i="1" n="106">
            </veh>
            <veh i="2" n="107">
            </veh>
            <veh i="3" n="206">
            </veh>
        </make>
        <make i="2" n="GMC">
            <veh i="1" n="C3">
            </veh>
            <veh i="2" n="C4">
            </veh>
            <veh i="3" n="C5">
            </veh>
        </make>
        <make i="3" n="MERCEDES">
            <veh i="1" n="CLS">
            </veh>
            <veh i="2" n="SLS">
            </veh>
            <veh i="3" n="CLK">
            </veh>
        </make>
    </brand>
</root>

然后我用XML :: Twig编写了我的perl代码,我想在数组中添加所有属性&#34; n&#34; &#34; make&#34;元素......换句话说,我会形成一个由(福特,GMC,梅赛德斯)组成的阵列

我有一个简单的代码:但是没有工作蚂蚁我没有在doc中调用哪种方法。

init.pl

use strict;
use warnings;
use XML::Twig;

my $file = "cars.xml";

my  $twig = new XML::Twig;
$twig -> parsefile($file);
$twig -> set_pretty_print('indented');

my $xml_root = $twig -> root;
my $xml_brand = $xml_root -> first_child('brand');
my $make_attribute = $xml_make -> att('n');
print $make_attribute . "\n";

有人可以帮我吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

这将按您的意愿执行 - 使用get_xpathfindnodes的同义词)获取所有make元素,然后使用map检索{{1属性

n

输出:

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;
use Data::Dumper;

my $twig = XML::Twig -> new -> parsefile("cars.xml"); 

my @array_of_makes = map { $_ -> att('n') } $twig -> get_xpath('//make');

print Dumper \@array_of_makes;