【问题标题】:Java: Create DOM Element from Element, not DocumentJava:从元素创建 DOM 元素,而不是文档
【发布时间】: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 的上下文,为什么我不能从一个元素创建另一个元素呢?它肯定会简化我的设计,而不必在任何地方保留对文档的引用。

【问题讨论】:

    标签: java xml dom


    【解决方案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,除非您想序列化。立即变得简单的一件事是在不同的树之间移动元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2014-08-10
      • 2012-04-13
      相关资源
      最近更新 更多