java - 了解简单 XML 中的构造函数注入(inject)

标签 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]。我应该如何使用数组和构造函数注入(inject)中的值生成如上所述的 XML 文件?

最佳答案

假设您有一个类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 去除根元素。

就是这样!

关于java - 了解简单 XML 中的构造函数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789746/

相关文章:

java - 启用 Web 的 .EXE

java - Jlist 自定义渲染器

xml - 从 XML 中提取范式

xml - JAXB 能否首先通过包含进行编码,然后通过@XmlIDREF 进行编码以供后续引用?

android - 如何使用简单的 xml android 仅获取 xml 中嵌套元素的数据

java - 字符串无法转换为 ObservableValue

java - Keycloak - 将客户端的 IP 地址添加到 JWT token 的最佳/最简单方法?

xml - 使用 for-each-group 进行 XSLT 嵌套分组

android - 在空属性上改造 SimpleXMLConverter NumberFormatException

java - 使用 simple-xml 时转换 Point 对象