2011-11-11 12 views
0

私はsqliteデータベースをXMLファイルに移しました。私はデータベースのアップデートを扱っているので、サーバーからXMLファイルを取得するときに、2つのXMLファイルの違いを見つけて、自分の電話データベースに更新を適用する必要があります。問題は、2つのXMLファイルを正常に比較する方法です。あなたはどんなアプローチを見ますか?XMLファイルの比較

おかげ

答えて

0

は、あなただけのすべてのデータが新しいことを前提とし、ちょうど最新のXMLファイルを取得し、該当するレコードをすべての更新プログラムを適用することができませんでしたか?私はそれがエレガントではないことを知っていますが、あなたの状況によっては、良い賭けかもしれません。

+0

私はそれをすることができません、私は恐れて、私はcomparsionを作成し、特定のテーブルに変更を適用する必要があります。私のDTBは膨大になるので、全体を削除して再作成することはしませんが、いくつかのテーブルに対してのみ変更を適用します。 – Waypoint

0

両方のXML-ファイル内の要素の同じ量は、(追加/行を削除し、値のみを更新しない)がある(および場合のみ)場合は、次の操作を行うことができます:

XMLを使用しますパーサー(私はJDOMを使用します)は、両方のファイルのすべての要素を実行し、ある値と別の値を比較します。

private void compareElements(Element one, Element two) { 
    //Check if the elements have children 
    if(one has children AND two has children) { 
    //Recursive call this method for each child 
    List oneChildren = get list of ones children 
    List twoChildren = get list of twos children 
    for(Element childOne in oneChildren AND Element childTwo in twoChildren) 
     compareElements(childOne, childTwo)) 
    } 
    else { 
     //One and two have no children and we need to compare their values 
     if(one.Value != two.Value) 
     //Update the value in the database 
    } 
} 

注:上記のあなたが実際のコードを自分で動作するように持っているので、擬似コードで書かれている - しかし、私はそれが何をすべきかの一般的なアイデアを与える願っています。

また、XMLファイルのサイズによっては、上記の実行にかなりの時間がかかることがあります。

+0

コメントありがとうございますが、両方のXMLで同じ量のelemntsに対処できません。サーバーでは、もう1つの列、1つ以上の表...などがあります。 – Waypoint