微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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生成单值属性(非列表).

原文地址:https://www.jb51.cc/java/128679.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐