7
votes

Mappage d'objet de date Java au format DateTime de schéma XML

J'ai eu quelques problèmes de mappage de mon type de données Java au type de données de schéma standard.

J'ai une classe simple que j'ai annotée comme ceci. La variable d'instance de période est de type d'objet de date Java. xxx

voici mon service Web xxx

mon problème est-ce Renvoie les données de la date dans un format non en fonction de ce que je m'attends. xxx

Je voulais que l'élément de période soit renvoyé comme celui-ci xxx

Y a-t-il une façon de pouvoir y parvenir?


0 commentaires

3 Réponses :


0
votes

Votre Constructeur Constructeur semble alléger la chaîne de date formatée dans une date , qui est ensuite sérialisée à l'aide du format par défaut dans la réponse XML. Je suppose que d'utiliser la période de chaîne privée; (et la fixation des constructeurs) devrait fonctionner


2 commentaires

Merci de votre aide. Je pense que votre suggestion fonctionnerait, mais les données provenant de DB sont vraiment un objet de date et cette classe gère la cartographie. Si je convertitais ceci en chaîne, je devrais probablement recompiler un autre code. Toute autre idée s'il vous plaît?


@road to Yambourgs La réponse est beaucoup mieux. évanouissement



7
votes

Utilisez @ Xmljavatatyeadapter annotation et vous pouvez maréchal / smarchal vos champs de votre choix.

ne peut pas dire si c'est la manière la plus simple. P>

et note également qu'il peut nuire à l'interopérabilité avec n'importe quel code que essayerait d'utiliser votre WSDL. Les programmeurs pour cet autre code verraient XSD: String comme type de champ, et devront donc faire le formatage et l'analyse manuellement (tout comme vous le faites, oui), introduisant qui sait combien de bugs. Alors s'il vous plaît considérez si le XSD: Date un mauvais choix vraiment. P>

volé de ici : p> xxx pré>

update strong>: Comme cela a été mentionné par @Blise DUMMAN, une manière beaucoup plus courte consiste à annoter la date avec p >

@XmlSchemaType("date")
Date someDate;


1 commentaires

FYI, Jaxb's @xmlschematype ("Date") pourrait être utilisé pour ce cas d'utilisation: Stackoverflow.com/questions/5775860/...



8
votes

Vous pouvez effectuer ce qui suit pour contrôler le type de schéma: xxx

pour plus d'informations:


6 commentaires

@road to Yambourg - Yyyy-MM-DD est le format de XSD: date, qui est spécifiée dans l'annotation @xmlschematype.


Bon à savoir, merci, mais pouvez-vous me signaler à la documentation qui le dit? J'ai regardé télécharger.oracle.com/javaee / 5 / API / JAVAX / XML / BIND / ANNOTATION / ... et il mentionne aucun format.


@road to Yambourg - L'annotation Jaxb @xmlschematype vous permet de spécifier le type de schéma, le format des types de schéma est couvert par la spécification de schéma XML. Le format de XSD: La date est couverte ici: w3.org/tr/xmlschema-2 / # date


Le type de données XSD: Date présente une portion de fuseau horaire optionnelle. Où dans la documentation XMLSchematype, il est indiqué que TimeZone ne sera pas épelé dans le XML généré?


@road to Yambourg - n'ai pas encore trouvé la référence spécifique, mais ni la métro (mise en œuvre de référence) ou Moxy n'incluent les informations d'espace de noms lors de la mise à jour des instances de Java.Util.Date à XSD: date.


J'ai regardé une annotation similaire dans .net World, et ils formatent XSD: date de la même manière. Doit être requis dans une sorte de spécification alors. Il est assez intéressant comme une date sans fuseau horaire est à peu près la même chose que le texte sans encodage. 2011-03-25 a plus de 24 points de temps différents, dans ma compréhension.