D'abord, laissez-moi commencer par vous dire les détails sur le problème que j'essaie de résoudre.Diffuser/Fusionner des documents Xml par programmation
Nous avons une application tierce qui utilise des documents XML pour stocker toute sa logique métier et rechercher des tables et autres. L'application possède un ensemble de fichiers Xml de base et utilise un type de modèle d'héritage pour exposer les fichiers XML hérités que nous devons modifier pour personnaliser la logique métier. Je dis "sorte de" en raison de l'horrible mise en œuvre de l'héritage qu'il utilise.
Actuellement, il existe plus de 3000 fichiers XML séparés allant de 1k à 5000k et totalisant environ 600MB. La seule bonne chose à ce jour, c'est qu'ils utilisent tous la même Xsd. Notre problème est que nous recevons des mises à jour mensuelles des fichiers Xml de base, que nous sommes censés les mettre en place et mettre à jour nos documents personnalisés pour les aligner sur la nouvelle version des documents de base. Nous le faisons actuellement manuellement, en utilisant DiffDog, et reconstituons les documents pour en créer de nouveaux, mais j'essaie de comprendre ce qu'il est possible de faire par programmation. Voyons si je peux visualiser ceci pour vous:
Nous commençons avec une structure comme ceci ci-dessous, avec le modèle de base en place, et un modèle personnalisé que nous pouvons définir nos règles personnalisées dans (Qui nous faisons beaucoup)
.. \ LineOfBusiness \ BaseTemplates \ BaseXml_1_0_0_0.xml
.. \ LineOfBusiness \ CustomTemplates \ Document_1_0_0_0.xml
nous sommes alors donné une mise à niveau chaque mois maintenant, nous avons une structure comme celle-ci:
.. \ LineOfBusiness \ BaseTemplates \ BaseXml_1_0_0_0.xml
.. \ LineOfBusiness \ BaseTemplates \ BaseXml_1_1_0_0.xml
.. \ LineOfBusiness \ CustomTemplates \ Document_1_0_0_0.xml
Notre travail consiste essentiellement à créer le
.. \ LineOfBusiness \ CustomTemplates \ Document_1_1_0_0.xml
documents nous-mêmes chaque mois, ce qui porte les changements apportés à la version précédente, dans la nouvelle logique de versions.
Je sais que ce système est ridicule, mais je ne peux pas le changer aujourd'hui. Toutes les idées sur la façon d'aborder ce problème seraient géniales. Je peux vous dire ce que j'ai pensé jusqu'à présent ...
Désérialise la base et documents personnalisés anciens de version pour obtenir une liste des différences spécifiques, l'application de ces différences à une version désérialisé de la nouvelle base et appliquez les différences, puis reserialize à xml.
Appliquez une sorte de processus d'annotation aux modèles personnalisés afin de pouvoir extraire les différences par programme au moment de la mise à niveau.
Externaliser le processus de mise à niveau ...
quelle langue utilisez-vous? –
Nous sommes principalement un magasin Microsoft ici, même si nous avons deux développeurs Java. Mais la langue mise à part, toute idée ou pensée serait appréciée. –