質問: ### 前提・実現したいこと 下記のような2つのXMLファイルが存在している時 両方を比較して差異がある部分を抽出したい。 ■ ファイルA ``` ``` ■ ファイルB ``` ``` TTT - hoge - fuga - zzz - pair value="ddd"と TTT - hoge - fuga - zzz - pair value="ZZZ"とで 差異があるということを判別したいです。 ### 環境 CentOS [ シェル ruby(標準ライブラリのみ) ] ### 試したこと diff や grep で試したのですが、差異が下記のように表示されます。 ``` ``` これだとどこの部分の pair value かまでは分かりません。 TTTの hogeの fugaの zzzの pair valueが違うというところまでわかりたいです。 ruby(標準ライブラリ)またはシェルで実装させたいのですが、どのような手法が考えられますでしょうか? いい方法をご存知の方いらっしゃいましたら教えて頂けませんでしょうか? ### 結果イメージ ``` コンソール上 # スクリプト.rb ファイルA ファイルB ↓ 標準出力 TTT - hoge - fuga - ppp - pair value="ZZZ" ``` スクリプトと引数で実行、第一引数のファイルに無いものを標準出力させる。 これに近いかたちで実現させたいです。
回答: テキスト操作ではなく、XMLのDOM操作を活用しましょう。 REXMLライブラリを取り込み、ファイルをDOMオブジェクトとして読み込み、各ノードを操作する手順です。 丸投げですが、RubyでXML操作のサンプルのように操作します。