理解简单XML中的构造函数注入

时间:2014-02-14 21:21:32

标签: java xml simple-framework

我想用XML创建内联列表。像这样:

<numbers>
<phone>1234</phone>
<phone>5678</phone>
<phone>3456</phone>
</numbers>

教程here强调了如何完成。

现在,我不知道如何处理

public Order(@Attribute(name="name") String name, 
             @Element(name="product") String product)  

public OrderManager(@ElementList(name="orders") List<Order> orders) {
        this.orders = orders;
    }

我从未使用过Java中的列表。

我的情况: 查询时,数据库将填充数组phone_numbers[x]。我怎么能使用数组和构造函数注入中的值生成上面的XML文件?

1 个答案:

答案 0 :(得分:1)

假设您有一个类PhoneNumbers,如此:

@Root
public class PhoneNumbers {
    @ElementArray(name="numbers", entry = "phone")
    private String[] phones;

    public PhoneNumbers(String[] phones) {
        this.phones = phones;
    }
}

在这种情况下,无需转换为List

String[] phone_numbers= new String[] { "1234", "5678" }; // populate from DB instead
PhoneNumbers numbers = new PhoneNumbers(phone_numbers);

// to serialize
Serializer serializer = new Persister();
serializer.write(numbers, System.out);

这将打印出以下XML:

<phoneNumbers>
   <numbers length="2">
      <phone>1234</phone>
      <phone>5678</phone>
   </numbers>
</phoneNumbers>

Simple框架无法打印根元素。因此,如果您只需序列化numbers元素,则可以将String剥离根元素。

就是这样!