11
votes

Java XML simple à la cartographie / la liaison pojo?

J'essaie de comprendre le moyen le plus simple de mapper un fichier XML à un objet de Java uni.

Remarque: que dans mon exemple, le XML ne correspond pas tout à fait avec mon pojo prévu. P>

///////// THE XML
<?xml version="1.0" encoding="UTF-8"?>
<Animal>
  <standardName>
    <Name>Cat</Name>
  </standardName>
  <standardVersion>
    <VersionIdentifier>V02.00</VersionIdentifier>
  </standardVersion>
</Animal>


////// THE INTENDED POJO
class Animal
{
 private String name;
 private String versionIdentifier;
}


1 commentaires

En tant que note supplémentaire, la cartographie / la liaison devrait fonctionner à la fois.


4 Réponses :


2
votes

Je considère JibX le meilleur du groupe (Jaxb, Castor, Xmlbeans, etc.), en particulier parce que je privilégie les fichiers de mappage sur les annotations. Certes, il a une courbe d'apprentissage décente, mais le site Web a beaucoup de bons exemples. Vous devez avoir manqué le Tutoriel .

Si vous ne faites qu'un seul moyen (XML -> POJO), vous pouvez utiliser Digester .

Commentaire côté: je préfère la cartographie des fichiers sur les annotations car les annotations:

  • encombrer le code (surtout lors de l'utilisation d'annotations de plusieurs produits)
  • Mélange Problèmes (XML, Base de données, etc. dans la couche de domaine)
  • ne peut se lier qu'à une seule représentation XML (ou base de données, etc.)

2 commentaires

Je lis le tutoriel, mais à moins que j'ai manqué quelque chose .. Il semble y avoir quelques étapes supplémentaires requises (comparées à Castro), c'est-à-dire les exigences relatives à l'exécution de lingeggen. (Ce qui n'est pas vraiment expliqué trop facilement sur le site Web). Il semble que la surclinisation doit exécuter BindGen sur vos fichiers de mappage avant de pouvoir les utiliser. Existe-t-il de simples tutoriels / extraits disponibles? I.E. Compte tenu de ce fichier XML, ce fichier de mappage XML et cette pièce de code, vous obtiendrez cette instance Pojo.


Eclipselink Jaxb (Moxy) propose également un fichier de mappage. Cela vous donne la liberté d'utiliser des annotations (standard Jaxb Plus Extensions) ou un fichier de mappage.



3
votes

Cet article peut vous aider ... cela ne nécessite que de savoir XPath http: //onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html


2 commentaires

On dirait que cela nous fera probablement le meilleur choix, (ne pas avoir de mappage de fichiers ou d'annotations), mais il suffit d'avoir une forme de méthodes de traducteurs utilisant XPath, et éventuellement VTDXML, ou DOM.


Soyez prudent avec le digesteur, ce n'est pas un analyseur complet et peut être très lent pour les grandes documents XML



3
votes

Jakarta Commons Digester devrait faire ce que vous voulez.

Alternativement, je vous recommanderais d'écrire une classe de transformation qui utilise XPath pour récupérer des éléments du XML.


0 commentaires

5
votes

Eclipselink Jaxb (Moxy) vous permet de faire la cartographie basée sur le chemin que vous êtes Recherche: xxx

Pour plus d'informations, voir:


2 commentaires

Eclipselink Jaxb (Moxy) Link redirige vers 404


Voici un lien de travail: Eclipse.org/eclipselink