代码之家  ›  专栏  ›  技术社区  ›  DD.

将XML转换为Java对象[关闭]

  •  22
  • DD.  · 技术社区  · 14 年前

    将XML转换成Java对象的最佳方法是什么?

    我不想要类似的表示,但希望从XML中提取某些数据并填充Java对象。我看过Xstream,但不太喜欢那种“向下移动,向上移动”的东西。在编写转换器时,我更喜欢类似于dom的对象…

    7 回复  |  直到 9 年前
        1
  •  12
  •   duffymo    14 年前

    我知道每个人都喜欢像JAXB这样的自动解决方案,但我建议手工编码 javax.xml.bind.Marshaller javax.xml.bind.Unmarshaller 实现以获得您想要的,而不必不必要地填满perm-gen空间。使用JDOM解析XML,并使用XPath将这些值映射到Java对象。做一次会有一些工作,但你会得到你所需要的,而不会有更多。

        2
  •  23
  •   nos    14 年前

    如果您有一个XML模式, JAXB 很好-作为JDK的一部分。通过运行例如生成Java类 xjc -p foo myschema.xsd

    要读取XML文件并返回对象(从XJC工具生成的类中):

        JAXBContext context = JAXBContext.newInstance(FooObj.class);
        Unmarshaller unMarshaller = context.createUnmarshaller();
        FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml"));
    

    如果只希望将XML文档的一部分转换为对象,则可以执行类似的操作,例如,您应该能够将DOM文档的JAXB部分转换为完整的文件,而不是如上所述。

        3
  •  8
  •   lucas1000001    14 年前
        4
  •  6
  •   bdoughan    14 年前

    JAXB是将对象转换为XML的最佳方法,MOXY是最佳的JAXB实现。

    • JAXB is standard ,包含在Java SE 6中
    • JAX-WS、JAX-RS和SCA的标准XML绑定技术
    • 简单运行时

    Moxy提供以下扩展:

        5
  •  4
  •   informatik01 Viswanath Lekshmanan    11 年前

    你可以使用 Castor 用于方便地将XML转换为Java和BACK。

    有了Castor,你可以

    1. 轻松转换:一个简单的封送器和Unmarshaller使XML转换成Java和返回非常容易。
    2. 映射:可以创建映射文件来限制要从XML转换为Java和返回的数据量。
        6
  •  3
  •   Mark    14 年前

    我喜欢 Simple 发现很容易相处。它确实产生了一个类似的表示,所以也许不是你想要的。

    如果您正在寻找一个类似于dom的解决方案,可能是 JDom 很合适。

        7
  •  2
  •   Thomas Owens    14 年前

    我不完全确定这是不是你要找的,但是你可以用 XMLBeans 将XML绑定到Java对象。我必须在以前的雇主那里使用它。不幸的是,它是一个现有的系统,我只需要操纵对象,不需要生成包含它们的库。另外,我不确定没有XSD它能有多好的工作(你没有提到是否有XSD)。