XMLの比較

とても場当たり的なのだけど。

$ ruby -r pp -r tmpdir -r nokogiri -e '
Dir.mktmpdir {|td|
 tf = "#{td}/0"
 system "diff", "-w", "-U1000", *ARGV[0, 2].map {|f|
   tf.succ!
   $> = StringIO.new; open(f) {|io| pp Nokogiri::XML(io) }
   IO.write tf, $>.string.gsub(/(\#\([A-Z]\w*):0x[\da-f]+ {/) { "#{$1} {" }
   tf.dup
  }
}' a.xml b.xml

namespaceとかも含めて比較したかった。