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

如何使用可选元素为XML定义XSD,xml,jaxb,xsd,xsd-validation,Xml,Jaxb,Xsd,Xsd Validation,我有一个类似的xml <datapoint> <fieldname>somestring</fieldname> <value>some string</value> </datapoint> <datapoint> <fieldname>somestring</fieldname> <value>some string</value> &l

我有一个类似的xml

<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作为复杂类型。但当我使用value作为复杂类型时,我无法从JAXB中的value解析字符串值。我只得到一个物体。如果我将值声明为简单类型(字符串),我将无法读取文件名。我应该怎么做..请帮助。

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


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

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

Datapoint Datapoint=unmarshaller.unmarshal(xml,Datapoint.class).getValue();
如果为复杂类型定义全局元素,则不需要使用class参数。如果定义一个引用命名复杂类型的全局元素,将返回
JAXBElement
的实例,如果定义一个匿名类型的全局元素,将返回
Datapoint
的实例


我可以作为对象(列表)获取值的可能副本。它适用于某些字符串,但当我有一些字符串时,我无法读取字符串值