Java 为什么元素创建需要DOM中的文档对象?

Java 为什么元素创建需要DOM中的文档对象?,java,xml,dom,Java,Xml,Dom,如所述,在Java中,对于默认的W3C DOM库,需要使用文档对象工厂来创建元素,即: import org.w3c.dom.Document; import org.w3c.dom.Element; Document d; Element e; e = d.createElement("tag"); 为什么这是必要的?从概念上讲,为什么一个方法不能在不知道所有目标文档的情况下创建XML元素?为什么我不能使用“new”或类似的东西来实例化呢?因为domapi是基于接口的文档和元素

如所述,在Java中,对于默认的W3C DOM库,需要使用文档对象工厂来创建元素,即:

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

 Document d;
 Element e;

 e = d.createElement("tag");

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

因为domapi是基于接口的<代码>文档和
元素
都是接口,由API的各种实现实现。因此,您不能仅实例化元素,因为您不知道要使用哪个实现。因此,必须使用工厂方法创建所有节点。这是domapi设计师做出的设计选择


如果你想要一个更容易使用的DOM API,试试看,或者。

我会回答“因为DOM API设计得很糟糕…”但我想你的更彻底:)这是其中的一个API:他们把每一个设计模式都塞进了其中,但显然没有真正理解它们。这非常糟糕,是的,但谢天谢地,我们通常可以使用其中一种方法。接下来的问题是为什么CreateElement()不是静态的?因为接口方法不能是静态的。;)@maayank:如果它是静态的,那么它必须在实现
Document
的类上运行,而您不知道该类是什么。