Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扩展DOM元素功能的正确方法是什么?_Java_Xml_Oop_Dom - Fatal编程技术网

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

Java 扩展DOM元素功能的正确方法是什么?,java,xml,oop,dom,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 toFanc

在经历了相当长的一段时间的活动编码之后,我刚刚开始习惯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%的现有方法的委托


另外,我知道我总是可以编写一个
静态
实用方法来获取我的FancyObject,但我希望避免使用此解决方案。

您有两个选择:

  • 使用节点界面的用户数据字段。您可以将任意对象附加到IT,并构建类似于静态变体的内容
  • 改用JDOM或DOM4J。这些API更适合您的需求—扩展基本实现类。例如,使用JDOM,您可以定义一个自定义的NodeFactory,该NodeFactory可以创建自定义的元素实现
  • 使用JAXB将XML解组为对象图。在这种情况下,您几乎可以完全自由地实现自定义行为