2011-07-27 51 views
1

jaxb2-maven-plugin 1.3跳過對象的屬性。我無法修改XSD。在XSD(片段):爲什麼JAXB(jaxb2-maven-plugin)跳過這個屬性?

<?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> 

所得Java Object(片段):

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

爲什麼它不產生attA構件?

可能是因爲內聯枚舉?

謝謝。

Udo。

回答

1

org.jvnet.jaxb2.maven2 Maven的JAXB2-插件

後一切工作正常。

謝謝你的時間。

1

你能提供一個完整的XML模式來演示這個問題嗎?線下是我已經嘗試過,並且一切似乎按預期工作。


當我在下面的XML模式運行XJC:

<?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> 

我得到下面的類如預期:

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

內聯枚舉呢?在哪兒?對不起,但我無法透露XSD。明天當我在辦公室時,我會添加一個更有意義的例子。感謝您的時間。 – ssedano

0

什麼JAXB版本您使用的?內聯枚舉應該正確轉換爲Java枚舉。

您可以嘗試在屬性定義之外定義simpleType,這可能會有所幫助。

+0

感謝您的回覆。我無法修改該文件。 – ssedano