2010-12-11 27 views
1

Je ne suis pas sûr de pouvoir le faire, mais j'aimerais le faire. Je lis dans un fichier XML et sur certains nœuds il y a un bon nombre d'attributs que je finis par stocker dans une variable à l'intérieur d'un objet. Actuellement, j'analyse les noeuds, j'obtiens les noms des attributs, puis je passe par un très grand nombre de if/then/elses pour pouvoir le stocker dans la variable d'objet correcte. Tout cela fonctionne très bien. Ce que je voudrais pouvoir faire est de le faire un peu plus dynamiquement, avoir un mécanisme de mappage qui mappe le nom de l'attribut sur le nom de la variable dans l'objetadressant dynamiquement des variables d'une classe

Donc, par exemple, si j'ai un noeud, je pourrais mapper les données à dire, object.city et object.addr dans mon objet sans avoir à avoir un code si/alors pour chaque attribut que je capture. J'ai plusieurs noeuds/objets pour lesquels je fais cela, et bien que cela ne change pas si souvent, je pense qu'il serait plus propre de le mapper comme je l'ai décrit.

Est-ce que quelque chose comme ça est possible en Java?

merci beaucoup.

Répondre

1

Il existe de nombreux utilitaires de mappage POJO-XML. Les beans XML d'Apache et JAXB de Sun sont deux communes.

Voici un tutoriel XMLBeans: http://xmlbeans.apache.org/documentation/tutorial_getstarted.html

+0

Remarque: JAXB est en fait une norme (JSR-222) avec plusieurs implémentations: Metro JAXB (implémentation de référence), EclipseLink JAXB (MOXy), Apache JaxMe, etc. –

2

Oui, vous pouvez accéder aux champs et méthodes d'une classe à l'aide du Reflection API. Mais si votre objectif est seulement de lire un fichier XML, ne réinventez pas la roue - utilisez simplement une bibliothèque existante telle que JAXB.