具有Java属性的XML层次结构

具有Java属性的XML层次结构,java,xml,properties,Java,Xml,Properties,假设我有一个带有一些基本实例变量的Foo类。我使用XML文件中的属性初始化这些。现在每个Foo都有一个Bar作为变量,而Bar又有自己的属性。由于它们与封闭对象绑定,因此将它们保存在同一个文件中是有意义的。我应该如何格式化XML以便它也可以初始化对象?使用。它专门设计用于允许这种类型的对象初始化,包括处理对象间引用。使用。它是专门为允许这种类型的对象初始化而设计的,包括处理对象间引用。看一看,它允许您轻松地将Java对象层次结构序列化到XML或从XML反序列化 在最简单的情况下,它将使用POJO

假设我有一个带有一些基本实例变量的Foo类。我使用XML文件中的属性初始化这些。现在每个Foo都有一个Bar作为变量,而Bar又有自己的属性。由于它们与封闭对象绑定,因此将它们保存在同一个文件中是有意义的。我应该如何格式化XML以便它也可以初始化对象?

使用。它专门设计用于允许这种类型的对象初始化,包括处理对象间引用。

使用。它是专门为允许这种类型的对象初始化而设计的,包括处理对象间引用。

看一看,它允许您轻松地将Java对象层次结构序列化到XML或从XML反序列化

在最简单的情况下,它将使用POJO,而不需要额外的工作(不需要接口/基类等)。但是,您可以自定义它如何序列化和反序列化以重命名元素等,以适应现有的XML框架。

看一看,它允许您轻松地将Java对象层次结构序列化/反序列化到XML或从XML中序列化/反序列化

在最简单的情况下,它将使用POJO,而不需要额外的工作(不需要接口/基类等)。但您可以自定义它如何序列化和反序列化以重命名元素等,以适应现有的XML框架。

值得一看:

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);
  }
}
公共类JaxbDemo{
@XmlRootElement
公共静态类Foo{
@XmlElement公共酒吧;
}
公共静态类栏{
@XmlAttribute公共int baz;
}
公共静态void main(字符串[]args){
字符串xml=”“;
Foo-Foo=JAXB.unmarshal(新的StringReader(xml),Foo.class);
System.out.println(foo.bar.baz);
}
}
(公众成员用于演示。)

值得一看:

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);
  }
}
公共类JaxbDemo{
@XmlRootElement
公共静态类Foo{
@XmlElement公共酒吧;
}
公共静态类栏{
@XmlAttribute公共int baz;
}
公共静态void main(字符串[]args){
字符串xml=”“;
Foo-Foo=JAXB.unmarshal(新的StringReader(xml),Foo.class);
System.out.println(foo.bar.baz);
}
}

(公众成员用于演示。)

到目前为止,我喜欢XStream的想法,看看他们的例子。然而,我遇到了可怕的“prolog中不允许的内容”异常。更新:我成功地让它工作了(我愚蠢到从字符串而不是FileInputStream中读取),更不用说我的XML文件看起来也漂亮多了。我对这个解决方案很满意。到目前为止,我喜欢XStream的想法,看看它们的例子。然而,我遇到了可怕的“prolog中不允许的内容”异常。更新:我成功地让它工作了(我愚蠢到从字符串而不是FileInputStream中读取),更不用说我的XML文件看起来也漂亮多了。我对这个解决方案很满意。