如何将 XML 转换为 POJO,反之亦然?axis2 是否提供该功能?或者java是否已经有内置功能?或任何其他框架?谢谢
5 回答
我真的鼓励您使用JAXB。
JAXB 是一个注释框架,它将 Java 类映射到 XML 和 XML 模式(反之亦然)。它非常有用,因为您可以使用更接近您正在建模的领域的真实 Java 对象,而不是与 XML 文档的抽象表示进行交互。
如果您还需要构建一个 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
这里有一篇文章,解释了如何仅使用 XPath 来完成。
还可以在这里查看关于 SO 的类似讨论。
您可以尝试 JAXB http://jaxb.java.net/或 XMLBeans http://xmlbeans.apache.org/
一个简单的版本使用XMLEncoder
andXMLDecoder
类内置在 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();
这是我在谷歌上找到的一个随机教程:
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 -没有图书馆/