Java:从元素创建 DOM 元素,而不是文档
Posted
技术标签:
【中文标题】Java:从元素创建 DOM 元素,而不是文档【英文标题】:Java: Create DOM Element from Element, not Document 【发布时间】:2010-11-26 09:00:12 【问题描述】:如您所知,在 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 的上下文,为什么我不能从一个元素创建另一个元素呢?它肯定会简化我的设计,而不必在任何地方保留对文档的引用。
【问题讨论】:
【参考方案1】:Element 扩展 Node,Node 定义 getOwnerDocument,所以你可以这样做:
e2 = e.getOwnerDocument().createElement("tag");
http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/Node.html#getOwnerDocument()
【讨论】:
太棒了,我知道必须有一些简单的东西我错过了,谢谢【参考方案2】:我花了很长时间来解决 W3C DOM 中的文档问题。所有者文档的概念也作为工厂 (createElement(...)) 受到限制。如果您不需要使用 W3C DOM,我会更改为开源 XOM (http://www.xom.nu)。这被开发为比 W3C 更简单、更灵活(例如,您可以将 Element 子类化,而 Document 仅扮演次要角色)。 XOM 不需要 Document,除非您想序列化。立即变得简单的一件事是在不同的树之间移动元素。
【讨论】:
以上是关于Java:从元素创建 DOM 元素,而不是文档的主要内容,如果未能解决你的问题,请参考以下文章
将 ExtJS MVC 控制器附加到 DOM 元素,而不是组件