【发布时间】:2009-09-11 09:18:49
【问题描述】:
假设我有一个带有一些原始实例变量的类 Foo。我用 XML 文件中的属性初始化这些。现在每个 Foo 也有一个 Bar 作为变量,它又具有自己的属性。由于这些与封闭对象相关联,因此将它们保存在同一个文件中是有意义的。我应该如何格式化 XML 以便它也可以初始化对象?
【问题讨论】:
标签: java xml properties
假设我有一个带有一些原始实例变量的类 Foo。我用 XML 文件中的属性初始化这些。现在每个 Foo 也有一个 Bar 作为变量,它又具有自己的属性。由于这些与封闭对象相关联,因此将它们保存在同一个文件中是有意义的。我应该如何格式化 XML 以便它也可以初始化对象?
【问题讨论】:
标签: java xml properties
使用Spring。它专门设计用于允许这种类型的对象初始化,包括处理对象间引用。
【讨论】:
看看XStream,它允许您轻松地将Java 对象层次结构序列化/反序列化到XML。
在最简单的情况下,它将与 POJO 一起工作,无需额外工作(不需要接口/基类等)。但是您可以自定义它如何序列化和反序列化以重命名元素等以适应现有的 XML 框架。
【讨论】:
JAXB值得一看:
public class JaxbDemo {
@XmlRootElement
public static class Foo {
@XmlElement public Bar bar;
}
public static class Bar {
@XmlAttribute public int baz;
}
public static void main(String[] args) {
String xml = "<foo><bar baz='123'/></foo>";
Foo foo = JAXB.unmarshal(new StringReader(xml), Foo.class);
System.out.println(foo.bar.baz);
}
}
(用于演示目的的公共成员。)
【讨论】: