将XML转换为Java对象

DD.*_*DD. 22 java xml jaxb

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

我不想要类似的表示,但想从XML中提取某些数据并填充Java对象.我看过XStream,但并不喜欢整个"向下移动"的东西.在编写转换器时我更喜欢DOM之类的对象......

nos*_*nos 24

如果你有一个XML模式,JAXB很好 - 作为JDK的一部分.通过运行eg生成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"));
Run Code Online (Sandbox Code Playgroud)

如果您只想将XML文档的某些部分转换为对象,则可以执行类似的操作,例如,您应该能够为JAXB提供部分DOM文档,而不是如上所述的整个文件.


duf*_*ymo 12

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

  • 您认为JAXB生成的.class字节代码在哪里?JDK8可能没有实际意义:没有更多的烫发.我五年前写了这个答案. (3认同)

bdo*_*han 6

JAXB是将对象转换为XML的最佳方式,MOXy是最佳的JAXB实现.

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

MOXy提供以下扩展: