2011-11-11 4 views
0

J'ai transféré ma base de données sqlite vers un fichier XML. Je gère les mises à jour de base de données, donc quand je reçois un fichier XML du serveur, je dois trouver des différences entre les deux fichiers XML et ensuite appliquer des mises à jour sur la base de données de mon téléphone. Le problème est comment comparer avec succès deux fichiers XML? Voyez-vous une approche?Comparaison de fichiers XML

Merci

Répondre

0

Ne pourriez-vous simplement supposer que toutes les données sont nouvelles et il suffit de prendre le plus récent fichier xml et appliquer toutes les mises à jour des documents pertinents? Je sais que ce n'est pas élégant mais en fonction de votre situation, pourrait être un bon pari.

+0

Je ne peux pas me permettre de le faire, j'ai peur, je dois faire une comparaison et appliquer des changements sur des tables spécifiques. Mon DTB sera énorme, donc je ne vais pas supprimer tout et le recréer, mais je n'appliquerai des changements que pour certaines tables – Waypoint

0

Si (et seulement si) il y a la même quantité d'éléments dans les deux fichiers XML (vous n'ajouter/supprimer des lignes, mettre à jour uniquement pas des valeurs), vous pouvez effectuer les opérations suivantes:

Utilisez un XML analyseur (j'utilise JDOM) pour parcourir tous les éléments des deux fichiers, en comparant une valeur à l'autre.

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 
    } 
} 

Note: Ce qui précède est écrit en pseudo-code, vous devez travailler le code réel vous-même - mais je l'espère donne une idée générale de ce qu'il faut faire.

En fonction de la taille de vos fichiers XML, la procédure ci-dessus peut prendre un certain temps.

+0

Merci pour le commentaire, mais je ne peux pas supporter le même nombre d'elemnts dans les deux XML. Sur le serveur, je pourrais avoir une colonne de plus, une table de plus ... et ainsi de suite. – Waypoint