web-dev-qa-db-fra.com

Conversion de XML en Java

Quelle est la meilleure façon de convertir XML en objets Java?

Je ne veux pas une représentation similaire pour similaire, mais j'aimerais extraire certaines données du XML et remplir un objet Java. J'ai jeté un œil à XStream, mais je n'ai pas vraiment aimé tout le genre de choses "déplacer vers le bas, monter". Je préférerais un objet de type DOM lors de l'écriture de convertisseurs ...

22
DD.

Je sais que tout le monde aime les solutions automatiques comme JAXB et autres, mais je recommanderais le codage manuel javax.xml.bind.Marshaller et javax.xml.bind.Unmarshaller implémentations pour obtenir exactement ce que vous voulez sans remplir votre espace perm gen inutilement. Utilisez JDOM pour analyser XML et mapper les valeurs en objets Java utilisant XPath. Ce sera un peu de travail de le faire une fois, mais vous aurez exactement ce dont vous avez besoin et rien de plus.

12
duffymo

Si vous avez un schéma XML, [~ # ~] jaxb [~ ​​# ~] est Nice - fait partie du JDK. Générez des classes Java en exécutant par exemple xjc -p foo myschema.xsd

Pour lire un fichier XML et récupérer un objet (à partir des classes générées par l'outil xjc):

    JAXBContext context = JAXBContext.newInstance(FooObj.class);
    Unmarshaller unMarshaller = context.createUnmarshaller();
    FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml"));

Vous pouvez faire des choses similaires si vous ne voulez que des parties d'un document XML converties en un objet, vous devriez par exemple pouvoir donner à JAXB une partie d'un document DOM, au lieu d'un fichier entier comme ci-dessus.

24
nos

Découvrez le Apache Digester

http://commons.Apache.org/digester/

8
lucas1000001

JAXB est le meilleur moyen de convertir des objets en XML et MOXy est la meilleure implémentation JAXB.

  • JAXB est standard , inclus dans Java SE 6
  • Technologie de liaison XML standard pour JAX-WS, JAX-RS et SCA
  • Exécution simple

MOXy propose les extensions suivantes:

6
bdoughan

Vous pouvez utiliser Castor pour une conversion pratique de XML en Java et inversement).

Avec Castor, vous pouvez

  1. Facilité de conversion: un simple Marshaller et Unmarshaller rend la conversion de XML en Java et retour extrêmement facile.
  2. Mappage: Un fichier de mappage peut être créé pour limiter la quantité de données à convertir de XML à Java et inversement.
4
Tushar Tarkas

J'aime Simple et je l'ai trouvé très facile à travailler. Cela produit une représentation similaire pour donc, donc peut-être pas tout à fait ce que vous recherchez.

Si vous cherchez une solution de type DOM, un JDom conviendrait peut-être.

3
Mark

Je ne sais pas exactement si c'est ce que vous recherchez, mais vous pouvez utiliser quelque chose comme XMLBeans pour lier XML à Java objets. J'ai dû l'utiliser chez un ancien employeur. Malheureusement, c'était un système existant et je n'avais qu'à manipuler les objets et je n'avais pas à produire la bibliothèque qui les contient. De plus, je ne sais pas dans quelle mesure cela fonctionnera sans un XSD (vous n'a pas mentionné si vous en aviez un ou non).

2
Thomas Owens