Bonjour, voici mon code:

xsdFile:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
  <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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<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>
</jxb:bindings>
Et finalement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
JAXBContext context = JAXBContext.newInstance(Player.class,ObjectFactory.class); 
Unmarshaller decodeur = context.createUnmarshaller();
J'ai ajouté "xjc:simple" pour avoir @XMLRootElement, Mais une exception est levée:
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.example.org/Player")

Cela est du au XmlRootElement généré: @XmlRootElement(name = "Player", namespace = "http://www.example.org/Player")

Si je supprime le namespace, cela fonctionne parfaitement.

Comment puis-je avoir un XmlRootElement sans ce "namespace" ?

Merci