使用perl获取xml属性值
我对Perl脚本非常熟悉。我需要帮助获取total alarms的XML属性值(在本例中为11)使用perl获取xml属性值,xml,regex,perl,Xml,Regex,Perl,我对Perl脚本非常熟悉。我需要帮助获取total alarms的XML属性值(在本例中为11) 有什么想法吗?这里有一种使用XML::Twig模块的方法: #!/usr/bin/env perl use warnings; use strict; use XML::Twig; my $twig = XML::Twig->new( twig_roots => { '/alarm-response-list' => sub { printf qq|%s
有什么想法吗?这里有一种使用
XML::Twig
模块的方法:
#!/usr/bin/env perl
use warnings;
use strict;
use XML::Twig;
my $twig = XML::Twig->new(
twig_roots => {
'/alarm-response-list' => sub { printf qq|%s\n|, $_->att('total-alarms') },
},
)->parsefile(shift);
像这样运行:
perl script.pl xmlfile
这将产生:
11
这里有一种使用
XML::Twig
模块的方法:
#!/usr/bin/env perl
use warnings;
use strict;
use XML::Twig;
my $twig = XML::Twig->new(
twig_roots => {
'/alarm-response-list' => sub { printf qq|%s\n|, $_->att('total-alarms') },
},
)->parsefile(shift);
像这样运行:
perl script.pl xmlfile
这将产生:
11
XPath表达式不匹配,因为您在XML文档中指定了命名空间:
<alarm-response-list xmlns="url.com" ...
my ($alarms) = $xc->findvalue('//a:alarm-response-list/@total-alarms');
现在,这将按预期提取属性值。您的XPath表达式不匹配,因为您在XML文档中指定了名称空间:
<alarm-response-list xmlns="url.com" ...
my ($alarms) = $xc->findvalue('//a:alarm-response-list/@total-alarms');
现在,这将按预期提取属性值。如何将值保存在匿名子例程之外的变量中?在解析之前声明一个变量,并在处理程序中分配给它。闭包的魔力将使它工作。我如何将值保存在匿名子例程之外的变量中?在解析之前声明一个变量,并在处理程序中分配给它。闭包的魔力将使它发挥作用。