如何使用 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代码,我想在数组中添加"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_xpathfindnodes的同义词)获取所有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'
        ];

最新更新