Jaxb xml généré problème avec l'élément racine préfixe
Je suis en train de générer un document xml à l'aide de jaxb. J'ai créé xsd et généré des classes java.
Mais quand je générer le xml, je suis geeting préfixe ns2 à la balise racine, que je ne veux pas.
ex: je veux balise racine être
<report>
<id>rep 1</id>
</report>
Mais comme
<ns2:report>
....
</ns2:report>
Dans le java généré classe, j'ai donné l'annotation comme @XmlRootElement(name="report",namespace="urn:report")
Certains un pls aider
OriginalL'auteur crazyTechie | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Si c'est votre classe:
Alors il est logique qu'il y est un préfixe sur l'élément racine, parce que vous avez spécifié que la "racine" de l'élément est l'espace de noms qualifiés et l'élément "id" est pas.
Si vous ajoutez un paquet-info de classe à votre modèle, vous pouvez leverate l' @XmlSchema annotation:
Puis le JAXB mise en œuvre peut choisir de tirer parti de l'espace de noms par défaut, mais remarque maintenant que tous les éléments sont d'espace de noms qualifiés qui peuvent ou peuvent ne pas correspondre à votre schéma XML:
Pour plus d'informations sur JAXB et les espaces de noms, voir:
<Message xmlns:ns2="http://404story.com/Code" xmlns="http://404story.com/Order">
, puis une partie va utiliser<ns2:xxx
. Pourriez-vous me dire comment faire pour supprimer lens2
préfixe?Pouvez-vous poster une nouvelle question?
ok, voir stackoverflow.com/questions/25518253/...
OriginalL'auteur bdoughan
Prendre un coup d'oeil à cette réponse. Il explique comment utiliser un SAX Filtre pour éliminer tout espace.
OriginalL'auteur dogbane
L'entrée de blog Personnalisation de JAXB montre les alternatives fournies par la mise en œuvre d'un
PreferredMapper
. Malheureusement, il explique, ce n'est pas possible de totalement supprimer les espaces de noms.OriginalL'auteur stacker
Utiliser cet attribut dans votre élément racine de votre schéma: elementFormDefault="qualified"
Ainsi, par exemple:
OriginalL'auteur MeplatMasher
Quelque sorte, de la accepté de répondre ne fonctionne pas pour moi. J'ai eu du succès quand je trouve des solutions dans certains liés stockOverflow questions impliquant DelegatingXMLStreamWriter de cxf et un filtre, NoNamesWriter. La mise en œuvre que j'ai utilisé avec NoNamesWriter:
Invoquer le même que celui décrit ici, comme:
xmlmarshaller.maréchal(xc, NoNamesWriter.filtre(new FileOutputStream(outfile, false));
OriginalL'auteur Carlos H. Raymundo