我正在使用xml架构解析器,我正在使用带有XMLSchema.xsd的JAXB。 我遇到了JAXB的问题,因为我没有获得所有顶级元素的类。例如
<xs:element name="maxLength" id="maxLength" type="xs:numFacet">
我没有上一节MaxLength或类似的东西。只有NumFacet存在。
其他人经历过这种情况并且可以帮助我吗?
干杯, XLR
答案 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上还有其他方法可以找出元素名称等等。