2010-08-01 11 views
0

C'est un problème très courant mais j'ai encore besoin d'une solution spécifique si quelqu'un peut me fournir une solution. Toutefois, en raison des espaces de noms présents dans le fichier xml, l'objet de classe n'est pas rempli avec les éléments internes.JAXB Marshalling et unmarshalling évitant les espaces de noms

Le redressement que j'ai trouvé était de créer un objet JAXBContext create et unmarshaller, puis de le rendre conscient de l'espace de noms.

Je suis curieux s'il y a d'autres solutions à la même chose.

Répondre

1

Si le XML utilise des espaces de noms, ceux-ci font partie du nom de l'élément et ne doivent pas être analysés comme s'ils étaient des éléments sans motif. Par conséquent, ce n'est pas une option dans JAXB. Un previous question le long de ces lignes ont donné la seule solution comme assainir le XML avant d'unmarshalling et en supprimant tous les espaces de noms, avec les objets JAXB liés aux noms unnamespaced.

0

Si les nœuds sont toujours qualifiés avec des URI d'espaces de noms, vous devez ajouter ces informations d'espace de noms à vos liaisons JAXB. De nombreuses annotations JAXB prennent un paramètre d'espace de noms (I.e XmlRootElement, XmlAttribute, XmlElement, etc.). Il existe également une annotation au niveau du package, appelée @XmlSchema, que vous pouvez utiliser pour spécifier un espace de noms par défaut et les règles de qualification de l'espace de nom par défaut.

Questions connexes