【问题标题】:DOM handling using marklogic java client api使用 marklogic java 客户端 api 处理 DOM
【发布时间】:2018-10-07 14:52:22
【问题描述】:

我是 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

现在从句柄创建的文档引用给出了一个空指针异常。 我知道我正在从返回空文档的 getter 方法获取文档,但我并没有尝试从空文档中访问任何内容。而是尝试使用出现空指针异常的doc.createElement() 创建文档元素。

请解释问题。

【问题讨论】:

    标签: java dom nosql marklogic marklogic-8


    【解决方案1】:

    DOMHandle 将 XML 内容表示为 DOM 文档。它不是创建 DOM 文档的工厂。句柄只是一个适配器,它包装了我们从数据库中读取或在 Java 中创建的文档。除非使用构造函数DOMHandle(Document content) 或使用方法public void set(Document content) 显式设置,否则DOMHandle 的内容将为空,因此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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多