2011-07-27 6 views
1

jaxb2-maven-plugin 1.3 ignore un attribut d'un objet. Je ne peux pas modifier le XSD. Dans le XSD (fragment):Pourquoi JAXB (jaxb2-maven-plugin) ignore cet attribut?

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="classA" type="classA" substitutionGroup="classSubA"/> 

    <xs:complexType name="complexClassA" mixed="true"> 

    <xs:attribute name="attA"> 
     <xs:annotation> 
      <xs:appinfo> 
       <moProperty value="classA:attA"/> 
       <label value="Attribute A" default="true"/> 
       <externAccess value="readWrite"/> 
      <description value="NO COMMENTS"/> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="off"/> 
      <xs:enumeration value="on"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:attribute> 

<xs:attribute name="id" type="xs:unsignedInt"> 
    <xs:annotation> 
     <xs:appinfo> 
      <moProperty value="myClassB:id"/> 
      <label value="Id" default="true"/> 
      <externAccess value="readWrite"/> 
      <description value="NO COMMENTS"/> 
     </xs:appinfo> 
    </xs:annotation> 
</xs:attribute> 
</xs:schema> 

résultant Java Object (fragment):

public class ComplexClassA { 
    @XmlSchemaType(name = "unsignedInt") 
    protected Long id; 
} 

Pourquoi ne génère pas le membre attA?

Est-ce que cela pourrait causer l'énumération en ligne?

Merci.

Udo.

Répondre

1

Après être allé à

org.jvnet.jaxb2.maven2 maven-plugin-jaxb2

Tout fonctionne très bien.

Nous vous remercions de votre temps.

1

Pouvez-vous fournir un schéma XML complet qui illustre le problème? Au-dessous de la ligne est ce que j'ai essayé et tout semble fonctionner comme prévu.


Quand je lance XJC sur le schéma XML suivant:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/Foo" xmlns="http://www.example.org/Foo" 
    elementFormDefault="qualified"> 

    <xs:complexType name="complexClassA" mixed="true"> 

     <xs:attribute name="attA"> 
      <xs:annotation> 
       <xs:appinfo> 
        <moProperty value="classA:attA"/> 
        <label value="Attribute A" default="true"/> 
        <externAccess value="readWrite"/> 
        <description value="NO COMMENTS"/> 
       </xs:appinfo> 
      </xs:annotation> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:enumeration value="off"/> 
       <xs:enumeration value="on"/> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 

     <xs:attribute name="id" type="xs:unsignedInt"> 
      <xs:annotation> 
       <xs:appinfo> 
        <moProperty value="myClassB:id"/> 
        <label value="Id" default="true"/> 
        <externAccess value="readWrite"/> 
        <description value="NO COMMENTS"/> 
       </xs:appinfo> 
      </xs:annotation> 
     </xs:attribute> 

    </xs:complexType> 

</xs:schema> 

je reçois la classe suivante comme prévu:

package org.example.foo; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlSchemaType; 
import javax.xml.bind.annotation.XmlType; 
import javax.xml.bind.annotation.XmlValue; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "complexClassA", propOrder = { 
    "content" 
}) 
public class ComplexClassA { 

    @XmlValue 
    protected String content; 
    @XmlAttribute 
    protected String attA; 
    @XmlAttribute 
    @XmlSchemaType(name = "unsignedInt") 
    protected Long id; 

    public String getContent() { 
     return content; 
    } 

    public void setContent(String value) { 
     this.content = value; 
    } 

    public String getAttA() { 
     return attA; 
    } 

    public void setAttA(String value) { 
     this.attA = value; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long value) { 
     this.id = value; 
    } 

} 
+0

Qu'en est-il de l'énumération en ligne? Où est-ce que c'est? Désolé mais je ne peux pas divulguer le XSD. J'ajouterai un exemple plus significatif demain quand je serai au bureau. Merci pour votre temps. – ssedano

0

Quelle version JAXB utilisez-vous? L'énumération en ligne doit être transformée en une énumération Java correctement.

Vous pourriez essayer de définir le simpleType en dehors de la définition de l'attribut, cela aiderait probablement.

+0

Merci pour votre réponse. Je ne peux pas modifier le fichier. – ssedano

Questions connexes