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

我需要将XML数据转换为Java对象。 将此XML数据转换为对象的最佳做法是什么?

想法是通过Web服务获取数据(它不使用WSDL,只使用HTTP GET查询,因此我不能使用任何框架)并且答案是XML格式。 处理这种情况的最佳做法是什么?

看看XStream 。 它可能不是最快的,但它是Java中用户友好且直接的转换器之一,特别是如果您的模型不复杂。

JAXB是执行此操作的标准API: http : //java.sun.com/developer/technicalArticles/WebServices/jaxb/

对于JMS项目,我们在TextMessages(字符串属性)中嵌入了编组和解组(从java到xml和xml到java)XML。 我们尝试了JAXB, Jibx和XMLBeans 。 我们发现XMLBeans最适合我们。 快速,易于配置,良好的文档和简单的Maven集成。

我已经使用并将继续使用JDOM – > http://www.jdom.org

另一个选择是Sax Parser。 它是程序性的 – 即访问者模式 – 但如果xml相当轻量级(甚至中等重量),我发现它对此非常有用。

Java中的JAXB API(内置)。

我在MQ模块中使用过JIBX。 它工作得很好。 Ant配置很简单。 使用Xsd2Jibx转换器从XML模式生成绑定文件和Java bean。 编组和取消编组允许指定字符集参数。 在我的项目中处理自定义字符集非常有用。 但我在绑定编译器中发现了一个问题。 如果Java bean具有更长的路径名,则它会生成具有更长文件名的类文件,这将导致Windows XP中出现问题(它具有最大文件长度限制)。

我没有使用其他API。 所以我不想与其他人比较。 如果您决定使用JIBX,我希望这会有所帮助。

更多详情,请参阅JIBX网站

我也使用过XStream,它易于使用和定制。 你可以添加自己的自定义转换器,这对我来说非常方便…

所以很惊讶更多人没有提到Jibx。 令人惊讶的lib和我认为使用比Jaxb更简单。 性能也很好!

为此,您还可以考虑apache的bitwixt和xml的简单框架