Je suis mise à niveau d'un objet Java qui a actuellement une représentation XML dans cet esprit:annoter l'ajout d'un attribut à un élément
<myObjects>
<myObject uid="42" type="someEnum">
<name>Waldo</name>
<description>yada yada</description>
<myElement>some_string</myElement>
...
</myObject>
...
</myObjects>
myElement est en option - il peut être nulle en Java/omis dans XML.
Je suis l'ajout d'un champ qui est seulement pertinent si myElement a une valeur réelle (et pour maintenir la compatibilité avec XML précédent, il est facultatif en lui-même)
J'essaie d'éviter ceci:
<myElement>some_string</myElement>
<myAttr>foo</myAttr>
et préfèrent quelque chose comme ceci:
<myElement myAttr="foo">some_string</myElement>
mais cognant ma tête pendant 2 jours w sur comment l'annoter.
- Je pensais que de marquer avec XmlTransient et laissez un XmlAnyElement l'attraper à la place tout en unmarshalling - mais il semble que cela causera un problème lors du débranchement l'objet de retour de Java vers XML.
- J'ai essayé de créer un XmlAdapter pour l'élément - mais la méthode unmarshal n'obtient que le contenu interne ("some_string"). Est-ce qu'il me manque quelque chose avec cette technique?
- est-il un moyen de juste obtenir l'élément sous forme de chaîne ("< myElement myAttr = \ "foo \" > some_string </myElement >") et je vais processus moi-même?
- Recommandez-vous une autre approche?
Nous devons voir votre java – skaffman
Si ce n'était pas clair - je dois seulement garder la compatibilité avec les fichiers XML précédents. Et je peux faire ce que je veux avec le code Java. Donc, intentionnellement, je ne l'ai pas fourni, afin de ne pas vous biaiser (Blaise Doughan l'a interféré assez bien ci-dessous). – targumon