我有一个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代码,我想在数组中添加"make"元素的所有属性"n"。。。换句话说,我将由(福特、通用、梅赛德斯)组成一个阵列
我有一个简单的代码如下:但不起作用,因为我没有得到在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";
有人能帮我吗?提前感谢
这将执行您想要的操作-使用get_xpath
(findnodes
的同义词)获取所有make
元素,然后使用map
检索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;
输出:
$VAR1 = [
'Ford',
'GMC',
'MERCEDES'
];