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