XMLの差分取得2

textNodeの中身消去して、XMLの構造だけを比較するバージョン

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use LWP::UserAgent;
use XML::Simple;
use XML::DOM::XPath;
use Text::Diff;

binmode(STDOUT, ':utf8');

my $content1  = get('http://search.hatena.ne.jp/keyword?word=ABC&mode=rss&ie=utf8&page=1');
my $content2  = get('http://search.hatena.ne.jp/keyword?word=ABC&mode=rss&ie=utf8&page=2');

print diff \$content1, \$content2;

sub get {
  my $ua = LWP::UserAgent->new;
  my $xs = XML::Simple->new(ForceArray => 1, RootName => 'root');
  my $r  = $ua->get(shift);
  die $r->status_line unless $r->is_success;
  my $content = parse($r->content);

  return $xs->XMLout($xs->XMLin($content));
}

sub parse {
  my $parser   = XML::DOM::Parser->new();
  my $doc      = $parser->parse(shift);
  my @nodelist = $doc->findnodes('//text()');

  foreach my $node (@nodelist) {
    $node->setNodeValue('');
  }

  return $doc->toString();
}