2011-03-14 4 views
1

Je reçois un InputStream à partir d'un appel de services Web, et j'utilise JAXB pour le convertir en objets, donc je n'ai pas besoin d'analyser le xml.Mappage des données JAXB à un modèle de domaine

Les objets contiennent un tas de données qui ne m'intéressent pas, et des données qui m'intéressent, je veux instancier un objet de type modèle de domaine personnalisé. Par exemple, les objets JAXB contiennent environ 50 morceaux de données répartis sur peut-être 20 classes. Je veux choisir les données qui m'intéressent, environ 10 morceaux de données, et instancier ma classe de modèle de domaine avec les 10 morceaux de données.

Je dois utiliser Java 1.4, y a-t-il un framework que je peux utiliser, ou devrais-je simplement parcourir les objets JAXB et obtenir les données qui m'intéressent puis instancier un modèle de domaine et paramétrer les données?

+0

Utilisez-vous un JAXB 1 impl avec JDK 1.4? –

+0

comment puis-je savoir quelle version de JAXB j'utilise? – bmw0128

+0

l'a trouvé, en utilisant JAXB 1.3 – bmw0128

Répondre

1

utilisant JAXB 1.0

Vous pouvez appliquer une transformation XSLT au document uniquement les informations que vous aimez. Ensuite, vous pouvez créer un schéma XML pour ce document plus petit et générer votre modèle objet à partir de ce document. Ma réponse ci-dessous à une question connexe vous donnera une idée de la façon dont les API javax.xml.transform correspondent à:

En utilisant JAXB 2.0

Si vous êtes en mesure Pour mettre à niveau vers Java SE 5, vous pouvez tirer parti de JAXB 2.0. Je dirige la mise en œuvre EclipseLink JAXB (MOXy), et vous pouvez être intéressé par notre extension XPath:

+0

idée très intéressante, je pense que je vais regarder dans l'idée de transformer puisque je ne peux pas mettre à niveau pour le moment – bmw0128

0

L'écriture de certaines requêtes XPath personnalisées pour extraire les champs que vous voulez serait assez propre et simple. XPath fait partie de xalan ou d'un tas d'autres bibliothèques xml je crois: API Link

Pour clarifier (si vous n'avez jamais utilisé XPath auparavant), XPath vous permet d'écrire une requête simple et pathétique pour rechercher document XML. Donc, root/child/grandchild/ retournera la valeur du nœud petit-enfant, qui se trouvait sous le nœud enfant, qui se trouvait sous le nœud racine.

Questions connexes