无法从xsd生成适当的类

时间:2015-10-27 06:13:18

标签: java xml xsd cxf

我正在尝试从Question.xsd生成问题和标记类。但我无法在问题中添加2个(或更多)标签。如果我<xs:element ref="schemas:Tag">它有效(但会限制添加一个标签)。如果我删除<xs:element name="Tag">并将名称放在<xs:complexType >而不是Tag节点,它也可以。但是生成的ArrayOfTag包含String of List而不是List of Tag。实现这一目标的正确方法是什么?

 <xs:element name="Question">
    <xs:complexType>
        <xs:all>

            **<xs:element  name ="tag1" type="schemas:Tag"/>
            <xs:element name ="tag2" type="schemas:Tag"/>**

        </xs:all>
    </xs:complexType>
</xs:element>


<xs:element name="ArrayOfTag">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" ref="schemas:Tag"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

    <xs:element name="Tag">
    <xs:complexType >
        <xs:all>
            <xs:element name="tagCode" type="xs:string" /> 
            <xs:element name="tagName" type="xs:string" />
        </xs:all>
    </xs:complexType>
</xs:element>

1 个答案:

答案 0 :(得分:1)

这足以满足您的需求。不要将Tag设为元素,而是将其设置为complextype,以便不使用ref,而是可以在任何需要标记类型元素的地方使用类型。

<xs:element name="Question">
    <xs:complexType>
        <xs:all>
          <xs:element name="tag1" type="Tag" />
          <xs:element name="tag2" type="Tag"/>
        </xs:all>
    </xs:complexType>
</xs:element>

<xs:element name="ArrayOfTag">
   <xs:complexType>
     <xs:sequence>
        <xs:element name="ArrayofTag" maxOccurs="unbounded" type="Tag"/>
     </xs:sequence>
   </xs:complexType>
</xs:element>

<xs:complexType name="Tag">
    <xs:all>
        <xs:element name="tagCode" type="xs:string" /> 
        <xs:element name="tagName" type="xs:string" />
    </xs:all>
</xs:complexType>
相关问题