我需要将XML数据转换为Java对象。将此XML数据转换为对象的最佳做法是什么?
想法是通过Web服务获取数据(它不使用WSDL,只使用HTTP GET查询,因此我不能使用任何框架)并且答案是XML格式的。处理这种情况的最佳做法是什么?
答案 0 :(得分:12)
JAXB是执行此操作的标准API:http://java.sun.com/developer/technicalArticles/WebServices/jaxb/
答案 1 :(得分:10)
看看XStream。它可能不是最快的,但它是Java中用户友好且直接的转换器之一,特别是如果您的模型不复杂。
答案 2 :(得分:4)
对于JMS项目,我们在TextMessages(字符串属性)中嵌入了编组和解组(从java到xml和xml到java)XML。我们尝试了JAXB,Jibx和XMLBeans。我们发现XMLBeans最适合我们。快速,易于配置,良好的文档和简单的Maven集成。
答案 3 :(得分:3)
我已经使用并将继续使用JDOM - > www.jdom.org
答案 4 :(得分:2)
另一个选择是Sax Parser。它是程序性的 - 即访问者模式 - 但如果xml相当轻量级(甚至中等重量),我发现它对此非常有用。
答案 5 :(得分:2)
Java内置的JAXB API(内置)。
答案 6 :(得分:1)
我在MQ模块中使用过JIBX。它工作得很好。 Ant配置很简单。使用Xsd2Jibx转换器从XML模式生成绑定文件和Java bean。编组和取消编组允许指定字符集参数。在我的项目中处理自定义字符集非常有用。但我在绑定编译器中发现了一个问题。如果Java bean具有更长的路径名,则它会生成具有更长文件名的类文件,这将导致Windows XP中出现问题(它具有最大文件长度限制)。
我没有使用其他API。所以我不想与其他人比较。如果您决定使用JIBX,我希望这会有所帮助。
更多详情,请参阅JIBX website
答案 7 :(得分:0)
我也使用过XStream,它易于使用和自定义。你可以添加自己的自定义转换器,这对我来说非常方便......
答案 8 :(得分:0)
令人惊讶的是,更多人没有提到Jibx。令人惊讶的lib和我认为使用比Jaxb更简单。表现也很棒!
答案 9 :(得分:0)
为此你也可以考虑apache的bitwixt和xml的简单框架