8
votes

JAXB - Les champs de lamarshales sont nuls

Nous sommes une réponse à une réponse de http://xmlgw.comanieshouse.gov.uk/ . C'est le texte envoyé au Marshall:

@XmlSchema(namespace = "http://xmlgw.companieshouse.gov.uk/v1-0", elementFormDefault = XmlNsForm.QUALIFIED, //
    xmlns = {
        @XmlNs(prefix = "xsi", namespaceURI = "http://www.w3.org/2001/XMLSchema-instance") 
     }
)

package uk.gov.companieshouse;


3 Réponses :


15
votes

Vous devez utiliser un niveau de package @xmlschema code> Annotation pour spécifier la qualification d'espace de noms pour votre modèle.

documentBuilderFactory.setNamespaceAware(true);


2 commentaires

Merci de me faire remarquer l'annotation de schéma de paquet :) Il s'avère que ce n'était pas le bon.


Java a changé autour de 1,8.0_100 qui répond à cette réponse le seul moyen de définir le schéma pour tous les champs. Avant que cette version @xmlrootelement fonctionnait également.



2
votes

J'ai compris la bonne réponse grâce à @ Blaise DUMM . Après avoir examiné la qualification de l'espace de nom d'emballage, j'ai constaté qu'il était dirigé vers: xxx

et il aurait dû être dirigé vers: xxx

pas sûr de savoir comment cela a été égaré.


1 commentaires

Cela le ferait. Ce qui se passait était que Jaxb pensait que chacun des annotations @xmlelement était dans le mauvais espace de noms, de sorte qu'ils ne correspondaient pas lors de la désérialisation et que les données étaient donc chutées sur le sol. (Jaxb ignore les éléments inconnus par défaut.)



0
votes

J'ai résolu ceci en faisant ollementformDefault = "non qualifié" dans le XSD avant de générer des talons, sinon fait le changement manuellement dans le paquet-info.java


0 commentaires