2012-07-10 53 views
1

我有以下几点:的SimpleXML的xs:choice元素

<xs:complexType name="AnswerType"> 
    <xs:choice minOccurs="1" maxOccurs="1"> 
     <xs:element name="Checklist" type="ChecklistType" /> 
     <xs:element name="OptionList" type="OptionListType" /> 
     <xs:element name="Measurement" type="MeasureType" /> 
    </xs:choice> 
</xs:complexType> 

如何我注释使用SimpleXML选择XSD元素?目前我必须将它们全部设置为required = false

@Element(name = "Checklist", required=false) 
protected ChecklistType checklist; 
@Element(name = "OptionList", required=false) 
protected OptionListType optionList; 
@Element(name = "Measurement", required=false) 
protected MeasureType measurement; 

当然有更好的方法。一个必须要求=真,但是如何?

回答

1

我在教程中找不到这个答案,但我翻到了这些例子,并找到了第二个例子来解决这个问题。在javadocs中查找ElementUnion类。该示例是here

@Root 
public class Example { 

    @ElementUnion({ 
     @Element(name="text", type=String.class), 
     @Element(name="int", type=Integer.class), 
     @Element(name="double", type=Double.class) 
    }) 
    private Object value; 
}