有没有一种声明性的方法将XML解析成Java对象?

5
我正在编写一个将XML文件导入到我的Java应用程序的函数。我正在使用XOM解析XML文件。代码中解析XML的部分很难理解,它是一些硬编码的.getChild(3)等。与声明式XML文档相比,很难跟踪代码。
有没有更可维护的方法将XML文档解析为Java对象?我希望以更声明性的方式进行,可以指定哪些标记对应哪些Java类。
7个回答

3

看一下JAX/B - 这是一种相当简单的基于注释的方法。它是一个标准的Java API。

有一些工具可以从XSD或示例XML文件生成带注释的Java类。我在我的博客中描述了我使用它的情况。


谢谢,我读了你的博客文章。当你可以右键单击一个XML文件然后生成XSD时,你一定有一个很棒的IDE。我在使用的Eclipse中没有找到这个选项。我需要去了解一下JAXB。 - Jonas
请查看Eclipse Dali项目中新增的JAXB支持:http://www.eclipse.org/webtools/releases/3.2.0/NewAndNoteworthy/jpa.php - bdoughan

2

我非常喜欢使用Simple将XML转换为Java。


请查看:http://bdoughan.blogspot.com/2010/10/how-does-jaxb-compare-to-simple.html - bdoughan

1

Simple XML框架使用字段和方法声明以及类定义上的注释来映射XML到Java和反向操作。它比JAXB轻量级得多(后者需要大量依赖项)。事实上,它根本没有外部依赖。而且速度更快。我尝试过很多次JAXB,但发现注释和功能都很笨拙和繁琐。请查看Tutorial


1

1
Digester 仍然是一个活跃的项目吗?我在他们的网站上自2009年1月以来没有看到任何更新。 - bdoughan
Digester是稳定的,活跃度较低,但仍在维护。 - Emmanuel Bourg

1

认同JAXB (JSR-222) 是最好的解决方案。请注意,JAXB是一个规范,这意味着您可以选择不同的实现方式:

标准的JAXB允许您通过注释指定映射,MOXy JAXB还允许您通过XML指定元数据:

如果你想要一个可维护的解决方案,你需要打破几乎所有XML绑定解决方案中发现的XML元素之间的一对一关系,并使用MOXy中使用的基于XPath的映射:


0

我终于找到了使用简单且以声明方式解析XML的XStream


请查看:http://bdoughan.blogspot.com/2010/10/how-does-jaxb-compare-to-xstream.html - bdoughan


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接