私はsqliteデータベースをXMLファイルに移しました。私はデータベースのアップデートを扱っているので、サーバーからXMLファイルを取得するときに、2つのXMLファイルの違いを見つけて、自分の電話データベースに更新を適用する必要があります。問題は、2つのXMLファイルを正常に比較する方法です。あなたはどんなアプローチを見ますか?XMLファイルの比較
おかげ
私はsqliteデータベースをXMLファイルに移しました。私はデータベースのアップデートを扱っているので、サーバーからXMLファイルを取得するときに、2つのXMLファイルの違いを見つけて、自分の電話データベースに更新を適用する必要があります。問題は、2つのXMLファイルを正常に比較する方法です。あなたはどんなアプローチを見ますか?XMLファイルの比較
おかげ
は、あなただけのすべてのデータが新しいことを前提とし、ちょうど最新のXMLファイルを取得し、該当するレコードをすべての更新プログラムを適用することができませんでしたか?私はそれがエレガントではないことを知っていますが、あなたの状況によっては、良い賭けかもしれません。
両方の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ファイルのサイズによっては、上記の実行にかなりの時間がかかることがあります。
コメントありがとうございますが、両方のXMLで同じ量のelemntsに対処できません。サーバーでは、もう1つの列、1つ以上の表...などがあります。 – Waypoint
私はそれをすることができません、私は恐れて、私はcomparsionを作成し、特定のテーブルに変更を適用する必要があります。私のDTBは膨大になるので、全体を削除して再作成することはしませんが、いくつかのテーブルに対してのみ変更を適用します。 – Waypoint