如何在解析复杂的XML文件时防止样板Java代码?

问题描述:

我已经用DocumentBuilderFactory为复杂的XML文件编写了XML解析器。因为有许多不同的节点类型,所以有许多样板代码。对于每个节点类型(NodeName),我都有一个循环遍历子元素和一个可能的子元素的开关。如何在解析复杂的XML文件时防止样板Java代码?

是否可能只为不同的节点类型注册所需的代码然后运行解析?

几种方法:

  • Refactor重复的代码到可重复使用的方法。
  • 利用XPath直接选择特定节点。
  • 使用工具将XML转换为完全可用的Javabean。 XMLBeans

Java DOM解析API的确有点模板化。还有一些其他的库:

编写自定义解析器可能不是要走的路。 如果您只需将XML映射到Java对象,则预先存在的库或工具是最好的。让别人担心样板。

我是Apache Digester的忠实粉丝,它需要一大堆规则和为你制作Java bean。对于更多的学习曲线,但更多的灵活性和强大功能,您可以使用Apache XMLBeans。