使用marklogic java客户端api进行DOM处理

时间:2018-04-26 19:52:58

标签: java dom nosql marklogic marklogic-8

我是MarkLogic java API的新手,并尝试创建一个xml文档,其中Document是使用DocumentBuilderFactoryDocumentBuilder构建的,并且所有内容都可以正常使用以下代码。

 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()创建一个文档元素,其中出现空指针异常。

请解释这个问题。

1 个答案:

答案 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);