[英]Missing JAXB classes from XMLschema.xsd
我正在研究xml模式解析器,并且正在将JAXB与XMLSchema.xsd一起使用。 我在使用JAXB时遇到问题,因为我没有获得所有顶级元素的类。 例如
<xs:element name="maxLength" id="maxLength" type="xs:numFacet">
我没有上课MaxLength或类似的东西。 仅存在NumFacet。
其他人也经历过,请帮我吗?
干杯,XLR
据我所记得的jaxb,模式编译器xjc为给定的每种复杂模式创建类。 因此,如果您喜欢使用MaxLength类,则应在架构中添加一个复杂的类型声明:
<xs:complexType name="MaxLength">
<xs:attribute name="value" type="xs:int"/>
</xs:complexType>
<xs:element name="MyMaxLength" type="MaxLength"/>
现在,您应该获得一个具有成员变量值类型为integer的MaxLength类。
JAXB不会为任何已经具有类型的东西生成一个类,并且您也不需要一个。
如果NumFacet
像maxLength
元素这样的全局元素,则JAXB将返回一个包装NumFacet
类型的JAXBElement。 像这样:
JAXBElement<?> root = unmarshaller.unmarshal(myStream);
NumFacet value = (NumFacet) root.getValue();
JAXBElement上还有其他方法可以找出元素名称,等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.