我是MarkLogic java API的新手,并尝试创建一个xml文档,其中Document
是使用DocumentBuilderFactory
和DocumentBuilder
构建的,并且所有内容都可以正常使用以下代码。
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=factory.newDocumentBuilder();
Document doc=docBuilder.newDocument(); //Works fine
既然我有文档参考,我可以调用doc.CreateElement()
来创建一个xml结构化文档。
如果我使用来自com.marklogic.client.io.DOMHandle的DOMHandle引用文档,同样如此;
DOMHandle handle=new DOMHandle();
Document doc=handle.get();
doc.createElement(); //NULL POINTER EXCEPTION
现在,从handle创建的文档引用会给出一个空指针异常。
我知道我从getter方法获取文件,该方法返回一个空文档,但我不是试图从空文档中访问任何内容。而是尝试使用doc.createElement()
创建一个文档元素,其中出现空指针异常。
请解释这个问题。
答案 0 :(得分:3)
DOMHandle
将XML内容表示为DOM文档。它不是一个可以创建DOM文档的工厂。句柄只是一个适配器,它包装我们从数据库中读取或用Java创建的文档。除非使用构造函数DOMHandle(Document content)
或方法public void set(Document content)
显式设置,否则DOMHandle的内容将为null,因此为NullPointerException
。你应该做其中一个
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=factory.newDocumentBuilder();
Document doc=docBuilder.newDocument();
// Build the Document completely and assign it to the handle and use the handle
DOMHandle handle = new DOMHandle();
handle.set(doc);
// or DOMHandle handle = new DOMHandle(doc);
// or DOMHandle handle = new DOMHandle().with(doc);