Java:从Element创建DOM元素,而不是Document

时间:2009-09-08 02:34:34

标签: 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.createElement("anothertag");

由于e已经具有d的上下文,为什么我不能从元素创建另一个元素?它肯定会简化我的设计,而不必在任何地方保留对文档的引用。

2 个答案:

答案 0 :(得分:19)

Element extends Node,Node定义了getOwnerDocument,所以你可以这样做:

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

http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/Node.html#getOwnerDocument()

答案 1 :(得分:6)

我花了很长时间来解决W3C DOM中的Document问题。所有者文档的概念也作为工厂(createElement(...))受到限制。如果您不需要使用W3C DOM,我将更改为开源XOM(http://www.xom.nu)。这被开发为比W3C更简单和更灵活(例如,你可以继承Element和Document只有一个次要角色)。除非您要序列化,否则XOM不需要文档。立即变得更简单的一件事是在不同树之间移动元素。