缺少XMLschema.xsd中的JAXB类

时间:2010-04-26 10:59:11

标签: java xsd jaxb

我正在使用xml架构解析器,我正在使用带有XMLSchema.xsd的JAXB。 我遇到了JAXB的问题,因为我没有获得所有顶级元素的类。例如

<xs:element name="maxLength" id="maxLength" type="xs:numFacet"> 

我没有上一节MaxLength或类似的东西。只有NumFacet存在。

其他人经历过这种情况并且可以帮助我吗?

干杯, XLR

2 个答案:

答案 0 :(得分:0)

据我记得jaxb,模式编译器xjc为给定的每个复杂类型的模式创建类。因此,如果您想要一个MaxLength类,则应该在模式中添加一个复杂的类型声明:

<xs:complexType name="MaxLength">
<xs:attribute name="value" type="xs:int"/>
</xs:complexType>
<xs:element name="MyMaxLength" type="MaxLength"/>

您现在应该获得一个类 MaxLength ,其成员变量 value 类型为整数。

答案 1 :(得分:0)

JAXB不会为已有类型的任何内容生成类,也不需要一个类。

如果您解组像maxLength元素这样的全局元素,那么JAXB将返回包含NumFacet类型的JAXBElement。像这样:

JAXBElement<?> root = unmarshaller.unmarshal(myStream);
NumFacet value = (NumFacet) root.getValue();

JAXBElement上还有其他方法可以找出元素名称等等。