Comment définir l'espace de noms par défaut à l'aide de JAXB
J'ai un ATOME-représentation XML de mes données renvoyées par l'intermédiaire d'un Spring MVC, web service. Je suis l'aide de JAXB à faire de la sérialisation, j'ai un certain nombre d'espaces de noms, mais je veux de l'espace de noms par défaut fixé à l'Atome avec pas de préfixe. Voici ce que j'ai jusqu'à présent dans package-info.java
mais le préfixe atom est en cours de mise à ns3.
@XmlSchema(namespace = com.mycomponay.foo.ATOM_NAMESPACE,
xmlns = {
@XmlNs(prefix = "foo", namespaceURI = com.mycomponay.foo.NAMESPACE_FOO),
}, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.mycompany.web;
import javax.xml.bind.annotation.XmlNs;
Aussi, j'ai remarqué les espaces de noms d'affichage dans google chrome mais pas sous Firefox.
juste par curiosité: pourquoi avez-vous l'esprit de ce préfixe d'espace de noms est utilisé?
OriginalL'auteur user86834 | 2013-07-04
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter une
@XmlNs
annotation avec le préfixe""
pour l'espace de noms que vous souhaitez afficher par défaut.Remarque:
Les espaces de noms spécifiés dans le
@XmlSchema
annotation sont destinés à affecter la génération du Schéma XML et ne sont pas garantis pour être utilisé lorsqu'un objet modèle est convoquée pour XML. Cependant EclipseLink JAXB (MOXy) et les versions récentes de la JAXB de référence de mise en œuvre va utiliser chaque fois que possible.Pour Plus D'Informations
Jaxb2RootElementHttpMessageConverter
j'ai essayé de prolonger et d'ajouter définir lacom.sun.xml.internal.bind.namespacePrefixMapper
bien avec mon customNamespacePrefixMapper
mais avec pas de chance.J'ai eu à travailler avec mon custom
NamespacePrefixMapper
et il est appelé. Maintenant, je suis présenté avec une autre question, le temps que mon customNamespacePrefixMapper
est appelé le vide préfixe est déjà pris par ledefaultNsUri
qui est codé en dur dansJAXBContextImpl
. Quelqu'un connais une solution à ce problème?N'est-ce pas
XMLConstants.DEFAULT_NS_PREFIX
préféré?C'est la bonne réponse pour la question. Vous devez encore définir @XmlRootElement(name="nom") sans espace de noms de paramètre de l'élément racine d'annotation. Sinon ns1.. comme les espaces de noms sera ajouté.
OriginalL'auteur bdoughan
si vous utilisez catégorie distincte de l'élément XML, de les annoter avec namespace="", serait de travailler.
OriginalL'auteur lwpro2