使用JAXP,创建元素的“Hello world”是:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
Element e = doc.createElement("helloElement");
// attributes, append, etc...
这使得创建依赖于文档对象的Element。有没有办法在没有特定文档的情况下创建元素?类似的东西:
Element e = DomDocument.createElement("helloElement"); //static method or so ...
return e;
实现Element接口的方式太多了!
目的是从POJO获取DOM元素而无需传递文档 有什么建议吗?
答案 0 :(得分:5)
有没有办法在没有特定文档的情况下创建元素?
没有。设计DOM的方式Document
是所有其他对象的工厂,这些对象只能存在于特定Document
的上下文中。因此,您已经通过从DocumentBuilder
创建一个空文档来使用正确的方法。
目的是从POJO获取DOM元素而无需传递文档
您可以在POJO中创建自己的Document
并使用它来创建元素,但如果您的方法的调用者想要将返回的Element
添加到他们自己的Document
他们首先必须通过调用adoptNode
来“采用”它,因为Document
只允许包含它“拥有”的节点。