1

我有一个这样的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 中解析字符串值。我只得到一个对象。如果我将值声明为简单类型(字符串),我将无法读取文件名。我该怎么办..请帮忙。

4

1 回答 1

0

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


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

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

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

如果为复杂类型定义全局元素,则不需要使用 class 参数。如果您定义一个引用命名复杂类型的全局元素,您将获得一个JAXBElement<Datapoint>back 的实例,如果您定义一个具有匿名类型的全局元素,您将获得一个Datapoint.

于 2013-09-03T17:43:41.120 回答