【发布时间】:2012-06-28 14:42:22
【问题描述】:
可能重复:
What is the best/simplest way to read in an XML file in Java application?
如何将 XML 转换为 POJO,反之亦然? axis2 是否提供该功能?或者java是否已经有内置功能?或任何其他框架?谢谢
【问题讨论】:
可能重复:
What is the best/simplest way to read in an XML file in Java application?
如何将 XML 转换为 POJO,反之亦然? axis2 是否提供该功能?或者java是否已经有内置功能?或任何其他框架?谢谢
【问题讨论】:
我真的鼓励您使用 JAXB。
JAXB 是一个注释框架,它将 Java 类映射到 XML 和 XML 模式(反之亦然)。它非常有用,因为您无需与 XML 文档的抽象表示进行交互,而是可以使用更接近您正在建模的领域的真实 Java 对象。
如果你还需要构建一个 RESTful web 服务,通过 JAXB 将 Java 对象自动序列化/反序列化为 XML,我也建议你阅读这本书:
带有 JAX-RS 的 Oreilly RESTful Java -(第 6 章。JAX-RS 内容处理程序)
【讨论】:
如果您需要一个现成的框架,请查看xstream
【讨论】:
有多种框架:Jaxb、XStream、JiBX 等。
可能对您有所帮助的教程:
http://thomassundberg.wordpress.com/2010/01/19/how-to-convert-a-pojo-to-xml-with-jaxb/
http://numberformat.wordpress.com/2009/11/01/using-jaxb-to-convert-between-xml-and-pojos/
http://soadev.blogspot.com/2011/07/jaxb-converting-pojo-to-xml-and-vice.html
http://jibx.sourceforge.net/binding/tutorial/binding-tutorial.html
有一个article here,它解释了如何只使用 XPath。
还可以查看关于 SO here 的类似讨论。
【讨论】:
您可以尝试 JAXB http://jaxb.java.net/ 或 XMLBeans http://xmlbeans.apache.org/
【讨论】:
使用XMLEncoder 和XMLDecoder 类将它的一个简单版本内置到java >=1.4 中。
用法很简单,就像
XMLEncoder xmlEncoder = new XMLEncoder( outputStream );
xmlEncoder.writeObject( myObject );
会给你类似的东西
<?xml version="1.0" encoding="UTF-8"?>
<java>
<object class="your.class.Name">
<void property="fieldName">
<boolean>true</boolean>
</void>
etc. etc. etc.
</object>
</java>
读回你简单做的对象
XMLDecoder xmlDecoder = new XMLDecoder( inputStream );
MyClass thing = (MyClass) xmlDecoder.readObject();
这是我在 google 上找到的随机教程:
http://www.avajava.com/tutorials/lessons/how-do-i-write-a-javabean-to-an-xml-file-using-xmlencoder.html
这种方法并不是非常灵活,但它是内置的,无需配置且非常可预测。可能是一个很好的起点。
这是一个概述 xml 格式的文档:http://java.sun.com/products/jfc/tsc/articles/persistence3/
这是我刚刚找到的另一个链接,它解释了如何
从 xmlencoder 移动到 jaxb(内置于 jdk >= 1.6)以获得更大的灵活性:
http://en.newinstance.it/2010/08/05/javabeans-to-xml-with-no-libraries/
【讨论】: