2009-09-29 5 views
1

Je dois créer des documents XML à l'aide de packages java org.w3c.dom ou jdom intégrés à un ensemble de fichiers XSD. Les fichiers XSD sont similaires mais pas les mêmes. En substance, j'ai besoin de créer le fichier XML selon le XSD qui m'a été donné dynamiquement.Création par programme d'un document XML à l'aide d'un fichier XSD

Quelle est la meilleure façon de le faire. J'ai vérifié le paquet Validator, il n'a pas de fonctionnalités comme look-ahead ou itérateurs pour les éléments possibles à un nœud de contexte donné.

Idéalement, je cherche une architecture de type SAX où j'implémente un élément quand on me demande de le fournir sans contexte. Le moteur devrait assembler et me donner l'arbre dom à la fin.

Cette roue a-t-elle déjà été inventée?

Merci ..

Répondre

1

org.w3c.dom n'a pas de support pour XML Schemas. Pour JDom, vous pouvez utiliser des schémas pour valider un document, mais il n'existe aucun support pour les documents build.

Vous avez deux options:

  1. Utilisez JDom pour lire le schéma, analyser et produire un document selon ce document XML (un schéma est toujours un document XML valide aussi).

  2. Vous pouvez utiliser un mappeur XML tel que Castor. Castor peut lire un schéma et produire un ensemble de classes Java qui vous permettent de produire des documents correspondant à ce schéma.

Cette dernière approche ne fonctionne pas si bien dans votre cas puisque Castor génère différentes classes Java pour les structures XSD similaires à moins qu'ils sont définis dans le même document, de sorte que vous ne pouvez pas réutiliser facilement le code commun. La solution consiste à laisser Castor générer le code, puis à écrire un script ou similaire pour copier/fusionner les parties communes des XSD dans le même package Java.

+0

Merci pour la réponse. Je connais le castor, donc je suis certain que cela ne correspondrait pas à mes exigences. Peut-être que JDom est la voie à suivre. Je suis curieux de voir comment les éditeurs XML comme le plugin NetBeans, XMLSpy, Oxygen etc. sont capables de fournir des invites contextuelles et des prévisualisations. J'espérais qu'il y ait une bibliothèque/projet open-source qui puisse le faire en dehors de la boîte. –

+0

Il n'y a aucun problème pour obtenir les sources des éditeurs Netbeans ou Eclipse XML et jeter un oeil. –

1

Je suis actuellement en train d'analyser un XSD et de créer non pas un document XML en partie, mais quelque chose d'autre. J'ai trouvé que XSOM était très utile. Jetez un oeil à this bref petit tutoriel car il n'est pas évident de savoir comment l'utiliser tout de suite. La bibliothèque elle-même n'est pas difficile à utiliser une fois que vous l'avez trouvée et vous pouvez obtenir toutes les informations trouvées dans les attributs XSD, restrictions et éléments que vous pouvez utiliser pour générer un fichier XML.

+0

Merci, c'est très proche de ce que je cherchais. –

Questions connexes