【发布时间】:2013-08-26 16:08:03
【问题描述】:
映射 java 类是从以下 schema usign XJC 工具生成的。 XML 架构是:
<xs:complexType name="configurations">
<xs:sequence>
<xs:element name="configuration" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="variation" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute name="charValueName" type="LimitedString30" />
<xs:attribute name="charValueDesc" type="LimitedString40" />
<xs:attribute type="xs:decimal" name="price" />
<xs:attribute type="xs:string" name="pricingUnit" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="charName" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>***
使用 JAXB 编组的 XML 是:
<configurations>
<configuration charName="XYZ">
<variation>Configurations$Configuration$Variation@44d8783e</variation>
<variation>Configurations$Configuration$Variation@5fbe51c1</variation>
</configuration>
</configurations>
如果您查看上面的“variation”元素,它没有任何属性,如“charValueName”、“charValueDesc”等。知道为什么吗?使用 JAXB 是否对嵌套元素的深度有任何限制?
【问题讨论】:
-
您使用的是哪个 JAXB 实现和版本?
-
布莱斯,我使用的是 JAXB 2.0。
-
JAXB 2.0 是具体操作版本(参见:jcp.org/en/jsr/detail?id=222)。有诸如 RI (jaxb.java.net) 和 EclipseLink MOXy (eclipse.org/eclipselink/moxy.php) 之类的实现。您可以在
JAXBContext上调用getClass()查找提供程序,确定版本取决于提供程序。 -
抱歉,我没有完整阅读您的问题。我们正在使用 Moxy,(javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory)。
-
这与 MOXy 没有自动获取引用的类有关(您可以在自己创建
JAXBContext时提供它)。我相信这个问题已在 EclipseLink 2.3.3 中得到解决。
标签: java xml jaxb eclipselink moxy