什么是扩展DOM元素功能的正确方法?

时间:2011-09-13 16:10:12

标签: java xml oop dom

从主动编码中休息了很长时间后,我才刚刚开始习惯Java,所以这可能被认为是“新手问题”。任何帮助表示赞赏。

请考虑以下情形。我正在将XML文档解析为DOM。我正在使用javax.xml.parsers.DocumentBuilder获取org.w3c.dom.Document节点并扫描其org.w3c.dom.Element个节点,我很好。

但是,我想扩展org.w3c.dom.Element个对象的功能。说,我希望有一种方便的方法,通过给它们一些public FancyObject toFancyObject()方法从节点中提取一些信息。这是正确的做法吗?

考虑到org.w3c.dom.Element是一个接口,继承似乎是没有选择的。另一方面,组合在这种情况下似乎非常麻烦,因为这将是5%的新功能和95%的现有方法授权。

另外,我知道我总是可以写一个static实用工具方法来获取我的FancyObject,但我想避免这个解决方案。

1 个答案:

答案 0 :(得分:4)

您有几个选择:

  1. 使用Node接口的用户数据字段。您可以将任意对象附加到i t并构建类似于静态变体的内容。
  2. 请改用JDOM或DOM4J。这些API更适合您的要求w.r.t.扩展基础实现类。例如,使用JDOM,您可以定义可以创建自定义Element实现的自定义NodeFactory。
  3. 使用JAXB将XML解组为对象图。在这种情况下,您几乎可以完全自由地实现自定义行为。