【问题标题】:XML hierarchy with Java properties具有 Java 属性的 XML 层次结构
【发布时间】:2009-09-11 09:18:49
【问题描述】:

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

【问题讨论】:

    标签: java xml properties


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

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

      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);
        }
      }
      

      (用于演示目的的公共成员。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多