这是一个简短的XML文件,其中2个节点具有相同的子节点(但具有2个不同的值)。
节点MIAMI5000
7777为节点WASHINGTON
<country id="USA">
<city id="MIAMI" method="modify">
<attributes>
<number_people>5000</number_people>
<average_income>40</average_income>
</attributes>
</city>
<city id="WASHINGTON" method="modify">
<attributes>
<number_people>7777</number_people>
<average_income>40</average_income>
</attributes>
</city>
</country>
使用Perl :: Twig,我想检查节点MIAMI和WASHINGTON是否为IDENTICAL(具有相同的子节点和相同的值)。
这是我所做的不起作用 ($ M-> children eq $ W-&gt; children)被发现为TRUE。 它应该是假的,因为“number_people”值是不同的。
#!/usr/bin/perl -w
use warnings;
use XML::Twig;
my $t= XML::Twig->new;
my $v= XML::Twig::Elt->new;
$t-> parsefile ('file.xml');
my $M=$t->first_elt('city'); # retrieve node MIAMI
my $W=$M->next_sibling('city'); # retrieve node WASHINGTON
if ($M->children eq $W->children) {print "the two nodes are exactly IDENTICAL"; }
答案 0 :(得分:2)
有关模块Data::Compare的内容,它有助于递归地比较两个perl数据结构。
我检查模块XML :: Twig的文档,你可以使用方法simplify
获得任何TWIG对象的结构。所以$M->children->simplify