如何使用可选元素为XML定义XSD

时间:2013-09-03 17:13:15

标签: xml jaxb xsd xsd-validation

我有一个xml likethis

<datapoint>
   <fieldname>somestring</fieldname>
   <value>some string</value>
</datapoint>
<datapoint>
   <fieldname>somestring</fieldname>
   <value>some string</value>
</datapoint>
<datapoint>
   <fieldname>somestring</fieldname>
   <value>
       <filename>some string</filename>
   </value>
</datapoint>

我需要为此XML定义XSD。我使用值作为复杂类型。但是当我使用value作为复杂类型时,我无法解析JAXB中Value的字符串值。我只得到一个对象。如果我将值声明为简单类型(String),我无法读取文件名。我该怎么做..请帮助。

1 个答案:

答案 0 :(得分:0)

通过在定义中包含minOccurs="0",将XML元素标记为可选。


  

我使用值作为复杂类型。但是当我使用价值作为复杂类型时   我无法从JAXB中的Value解析字符串值

如果只定义复杂类型,则需要将相应的类传递给unmarshal方法:

Datapoint datapoint = unmarshaller.unmarshal(xml, Datapoint.class).getValue();

如果为复杂类型定义全局元素,则不需要使用class参数。如果定义引用命名复杂类型的全局元素,则会返回JAXBElement<Datapoint>的实例,如果定义具有匿名类型的全局元素,则将返回Datapoint的实例。 / p>