【问题标题】:Why element creation requires the document object in DOM?为什么创建元素需要 DOM 中的文档对象?
【发布时间】:2011-02-04 04:14:13
【问题描述】:

正如others 所述,在 Java 中,使用默认的 W3C DOM 库,需要使用 Document 对象作为元素的工厂,即:

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

 Document d;
 Element e;

 e = d.createElement("tag");

为什么有必要这样做?为什么在概念上一个方法不能在不知道所有目标文档的情况下创建 XML 元素?为什么我不能只使用 'new' 或类似的东西来实例化?

【问题讨论】:

    标签: java xml dom


    【解决方案1】:

    因为 DOM API 很大程度上基于接口。 DocumentElement 都是接口,由 API 的各种实现实现。因此,您不能只实例化 Element,因为您不知道要使用哪个实现。因此,所有节点创建都必须使用工厂方法完成。这是 DOM API 设计者做出的设计选择。

    如果您想要一个更易于使用的 DOM API,请尝试使用 XOMJDOMDOM4J

    【讨论】:

    • 我会回答“因为 DOM API 的设计很糟糕......”但我想你的更彻底:) 这是他们在每一个设计中都塞满的 API 之一显然没有真正理解它们的模式。
    • 这很糟糕,是的,但幸运的是我们通常可以使用其中一种替代方案。
    • 接下来的问题是为什么 CreateElement() 不是静态的?
    • 因为接口方法不能是静态的。 ;)
    • @maayank:如果它是静态的,那么它就必须在实现Document 的类上运行——而且你不知道那个类是什么。
    猜你喜欢
    • 2015-09-23
    • 2019-12-20
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多