JAXB -EclipseLink MOXy-嵌套复合对象未正确编组

时间:2013-08-26 16:08:03

标签: java xml jaxb eclipselink moxy

映射java类是从以下模式使用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?

1 个答案:

答案 0 :(得分:2)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员

如果MOXy不知道正在编组的类,则可能会出现此问题。该对象最终根据其toString()方法进行编组。您发现您正在使用EclipseLink 2.3.1,我相信您正在遇到EclipseLink 2.3.2中修复的以下错误:

截至今日(2013年8月26日),当前版本的EclipseLink为2.5.0,可从以下位置下载: