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 元素,而不是文档的主要内容,如果未能解决你的问题,请参考以下文章

JS学习笔记DOM操作应用-创建插入和删除元素;文档碎片

JavaScript DOM实战:创建和克隆元素

将 ExtJS MVC 控制器附加到 DOM 元素,而不是组件

jQuery 在附加到 DOM 之前从元素中生成变量

Javascript 是不是可以复制 DOM 中的元素? [复制]

如何更新 MongoDB 中的数组元素而不是创建新元素