如何比较perl中不同元素的XML属性值

时间:2013-07-19 05:58:53

标签: xml perl xpath

我正在编写脚本来比较两个不同文件中<book>元素的属性值,并且需要找到属性值的任何差异。 XML 代码如下所示。属性需要比较是book元素中的'revision':

<book fpi="9780133125900" status="PearsonML 9.8" revision="3">
<book fpi="9780133125900" status="PearsonML 9.8" revision="2">

任何人都可以检查并建议我在Perl脚本中完成它。我提取了值但无法比较。

##for extracting 'revision' vaue in file1
my $xp = XML::XPath->new(filename => $find);
my $hname = $xp->find('/book/@revision');
##for extracting 'revision' vaue in file2
my $xx = XML::XPath->new(filename => $find1);
my  $hnaee = $xx->find('/book/@revision');

祝你好运, Bhuvana

1 个答案:

答案 0 :(得分:1)

一种方法是使用to_literal()函数从节点集中提取数字。它返回对标量的引用,因此在比较中取消引用它:

#!/usr/bin/env perl

use warnings;
use strict;
use XML::XPath;

#for extracting 'revision' vaue in file1
my $xp = XML::XPath->new(filename => $find);
my $hname = $xp->find('/book/@revision')->to_literal;
##for extracting 'revision' vaue in file2
my $xx = XML::XPath->new(filename => $find1);
my  $hnaee = $xx->find('/book/@revision')->to_literal;

if ( $$hname == $$hnaee ) { 
    print "Equal\n";
}
else {
    print "Not equal";
}