2

これは、同じ子を持つ (ただし、2 つの異なる値を持つ) 2 つのノードを含む短い XML ファイルです。

ノード MIAMI の場合は 5000

ノード WASHINGTON の場合は 7777

<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 が同一 (同じ子と同じ値を持つ) かどうかを確認したいと思います。

これが私がやったことですが、機能していません ($M->children eq $W->children) が TRUE であることがわかりました。「number_people」の値が異なるため、false のはずです。

#!/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"; } 
4

1 に答える 1

2

モジュールData::Compareについては、2つのperlデータ構造を再帰的に比較するのに役立ちます。

モジュールXML::Twigのドキュメントを確認します。メソッドを使用して、TWIGオブジェクトの構造を取得できますsimplify。それで$M->children->simplify

于 2012-07-04T20:42:57.467 に答える