Java:从元素而不是文档创建DOM元素

Java:从元素而不是文档创建DOM元素,java,xml,dom,Java,Xml,Dom,正如您所知,在Java中创建Dom元素的正确方法是这样做 import org.w3c.dom.Document; import org.w3c.dom.Element; Document d; Element e; e = d.createElement("tag"); 您需要使用d来生成元素,因为它需要文档上下文。(我不能100%确定原因,但可能误解了这是我问题的一部分) 我不明白的是,为什么你不能做这样的事 Element e; Element e2; e2 = e.createE

正如您所知,在Java中创建Dom元素的正确方法是这样做

import org.w3c.dom.Document;
import org.w3c.dom.Element;

Document d;
Element e;

e = d.createElement("tag");
您需要使用d来生成元素,因为它需要文档上下文。(我不能100%确定原因,但可能误解了这是我问题的一部分)

我不明白的是,为什么你不能做这样的事

Element e;
Element e2;

e2 = e.createElement("anothertag");

既然e已经有了d的上下文,为什么我不能从元素中创建另一个元素呢?它肯定会简化我的设计,而不必到处引用文档。

元素扩展了节点,节点定义了getOwnerDocument,因此您可以这样做:

e2 = e.getOwnerDocument().createElement("tag");

我花了太长时间在W3CDOM中解决文档的这个问题。所有者文档也被称为工厂(createElement(…)的概念受到限制。如果您不需要使用W3CDOM,我将改为开源XOM()。这比W3C更简单、更灵活(例如,您可以对元素进行子类化,而文档只起次要作用)。除非您希望序列化,否则XOM不需要文档。有一件事马上变得简单了,那就是在不同的树之间移动元素。

太棒了,我知道一定有一些简单的东西我错过了,谢谢