java – marshall with xjc创建了嵌套类

<Productinformation Context="GL">
 <Assets>
  <Asset ID="assetID" UserTypeID="ID">
    <Name>name</Name>
    <Reference ClassificationID="id"/>
      <Values>
        <Value AttributeID="ID">Value1</Value>
        <Value AttributeID="ID">Value2</Value>
          <MultiValue AttributeID="attributeID">
             <Value>value3a</Value>
             <Value>value3b</Value>
          </MultiValue>
     </Values>
   </Asset>
 </Assets>

 <Products>....</Products>

</Productinformation>

我使用xml-> xsd和xjc从中创建类.

现在我想创建我的Productinformation对象,并对其进行编组.

我的问题是xjc创建3个类和一个objectfactory,以及Productinformation中的一些嵌套类.当我看到可用的方法时,我主要看到的是getter而不是setter.

“资产”类没有像这样的方法;

asset.setValues(List<Value> values)

我最后写了这样有趣的代码;

Productinformation.Assets.Asset.Values.MultiValue multivalue=new Productinformation.Assets.Asset.Values.MultiValue();

Jaxb这是正常的吗?

解决方法

JAXB通常处理多值属性的方式是为List< Whatever>提供一个getter而不是setter,它返回一个可变列表 – 你应该调用getter来检索一个初始为空的列表,然后创建成员此列表的对象以正常方式使用new并将它们直接添加到列表中.您可以使用与顶级类完全相同的方式创建静态嵌套类.

应该使用getter和setter生成单值属性(非列表).

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...