XML de comparaison et de Fusion
Je pense que j'ai une assez unique problème à résoudre. Eh bien, je ne peux pas trouver suffisamment d'information à l'aide de Google. Donc ici ça va,
Je travail sur un projet Java EE SOA application qui stocke des documents XML comme format XML à l'aide d'Oracle XML DB. Chaque fois que le XML changements, je incrémentation de la version et de le jeter à la version précédente dans une autre table.
L'exigence est maintenant, je dois stocker les différences entre les 2 versions XML, au lieu de l'ensemble du document XML.
- Est-il une bibliothèque Java qui peut faire de comparaison XML? (XMLUnit, ... ?)
- Est-il un Schéma XML standard pour la capture de XML différences?
- Ce que la technologie de transformation puis-je appliquer les "différences" XML à faire l'aller-retour entre les versions? (XSLT, Groovy,.... ?)
Je vous remercie de votre temps.
Concernant un format standard, avez-vous vu RFC 5261? -- Semble antérieure à votre question par un petit peu, mieux vaut tard que jamais.
OriginalL'auteur user53552 | 2009-01-09
Vous devez vous connecter pour publier un commentaire.
Dans mon dernier emploi, nous avons eu un problème similaire: Nous avons eu pour détecter les changements, les insertions et les suppressions d'éléments spécifiques entre deux fichiers XML. Les fichiers n'ont pas le XML arbitraire; ils avaient à adhérer à notre XSD.
Notre solution a été de mettre en œuvre une sorte de fusion tri: Analyser les fichiers (à l'aide d'un analyseur SAX, pas un DOM parser, afin de permettre arbitrairement des fichiers volumineux), et de stocker l'analyse des données séparées HashMaps. Ensuite, nous avons comparé le contenu des deux cartes à l'aide d'une fusion-type de tri de l'algorithme.
Naturellement, plus les fichiers ai, de mémoire, plus de pression que nous avons connues, donc j'ai finalement écrit un FileHashMap classe qui a poussé la table de hachage en valeur de l'espace à accès aléatoire de fichiers. Bien que théoriquement plus lent, cette solution a permis à nos comparaisons de travailler avec des fichiers très volumineux, sans surcharge ou OutOfMemoryError conditions. (Une version de ce FileHashMap classe est disponible dans cette bibliothèque: http://www.clapper.org/software/java/util/)
Je n'ai aucune idée si ce que je viens de décrire est même de loin, à ce que vous avez besoin, mais j'ai pensé que je pourrais partager avec vous, juste au cas où.
Bonne chance.
OriginalL'auteur Brian Clapper
Note de côté: il y a maintenant un standard format for XML-connaissance des "rustines", dans RFC 5261. Il existe au moins un logiciel libre, xmlpatch, qui l'implémente. Il est écrit en C, vous pouvez appeler à partir de Java.
OriginalL'auteur bortzmeyer
Il ya un certain nombre de open-source XML diff outils écrite en Java, vous pouvez le lit d'enfant. Une liste de ces outils est de ici.
OriginalL'auteur Yes - that Jake.
Essayez d'utiliser Assez Diff. Il est conçu pour travailler avec de différentes extensions sur la base d'une syntaxe XML.
http://prettydiff.com/
OriginalL'auteur austincheney