Comment puis-je supprimer de l'espace de noms de la JAXB Fichier?
Voici mon code:
xsdFile:
<complexType name="Player">
<sequence>
<element name="Login" type="string"></element>
<element name="Passwd" type="string"></element>
</sequence>
</complexType>
<element name="Player" type="tns:Player"></element>
Build.xml:
<exec executable="${javahome}/bin/xjc" >
<arg value="-extension" />
<arg value="-b" />
<arg value="binding.xml" />
<arg value="-d" />
<arg value="${sources}" />
<arg value="-p" />
<arg value="metier" />
<arg value="Player.xsd" />
</exec>
</target>
binding.xml:
<jxb:bindings
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc" elementFormDefault="qualified" attributeFormDefault="unqualified"
version="2.1">
<jxb:globalBindings>
<xjc:simple />
<xjc:serializable/>
</jxb:globalBindings>
Et enfin:
JAXBContext context = JAXBContext.newInstance(Player.class,ObjectFactory.class);
Unmarshaller decodeur = context.createUnmarshaller();
- je ajouter "xjc:simple" afin d'avoir @XMLRootElement, mais une exception est levée: javax.xml.bind.UnmarshalException: inattendu élément (uri:"http://www.example.org/Player"
Il ne fonctionne pas correctement parce que j'ai eu this:@XmlRootElement(name = "Joueur", namespace = "http://www.example.org/Player")
Au lieu de simplement: @XmlRootElement(name = "Player")
Comment puis-je supprimer ce "espace de noms" ?
Grâce
Le JAXB code qui a été généré correspond à l'espace de noms des règles de qualification selon votre schéma XML. Êtes-vous sûr que vous voulez ce retirés de l'généré modèle d'objet?
OriginalL'auteur Dupont | 2011-05-28
Vous devez vous connecter pour publier un commentaire.
Si votre schéma XML indique que les documents XML doivent être de noms qualifiés, alors JAXB va générer un modèle Java avec l'espace de noms de qualification. Ci-dessous, je vais vous décrire une manière dans laquelle vous pourriez tirer profit d'un StAX analyseur de tromper JAXB en pensant que c'est de l'analyse d'un espace de noms qualfied document:
Joueur
NamespaceDelegate
Nous allons créer une mise en œuvre de
StreamReaderDelegate
. Ce délégué rapport à l'espace de noms pour tous les élément événements à"http://www.example.org/Player"
. Note: Cette astuce suppose que tous vos éléments sont qualifiés avec la même URI d'espace de noms.Démo
input.xml
OriginalL'auteur bdoughan
Je viens de supprimer "ObjectFactory.class" et ça fonctionne.
Nouveau code:
Il a dit
.class
, je suis en supposant que c'était une erreur de compilation.OriginalL'auteur Dupont