zoukankan      html  css  js  c++  java
  • “Spring Boot+Marklogic实战应用(1)”

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议。
    本文链接:http://www.blbk.info

    Spring Boot+Marklogic应用

    摘要: 在前一节的介绍,相信你已经搭建好了最基本的Spring Boot+Marklogic应用,并且能存入一个文本至数据库,本章本节继续通过实例来讲解String Boot+MANVE+Marklogic 8.

    文件管理员

    • 不同的文档格式由不同的文档管理器对象处理,这些对象充当文档和数据库连接之间的接口。
      • 该软件包com.marklogic.client.document包括用于二进制,XML,JSON和文本的文档管理器。如果您不知道文档格式,或者需要处理多种格式的文档,请使用通用文档管理器。
      • DatabaseClient实例具有工厂方法来创建com.marklogic.client.document.DocumentManager任何子类型的新方法。
    1
    2
    3
    4
    5
    BinaryDocumentManager binDocMgr = client.newBinaryDocumentManager();
    XMLDocumentManager XMLdocMgr = client.newXMLDocumentManager();
    JSONDocumentManager JSONDocMgr = client.newJSONDocumentManager();
    TextDocumentManager TextDocMgr = client.newTextDocumentManager();
    GenericDocumentManager genericDocMgr = client.newGenericDocumentManager();

    应用程序只需要为任何给定类型的文档创建一个文档管理器,而不管它处理的是哪种类型的文档。因此,即使您希望使用1,000,000,000个JSON文档,也只需要创建一个JSONDocumentManager对象即可。

    初始配置后,文档管理器是线程安全的;无论您有多少个线程,每种文档类型都只需要一个文档管理器。

    如果您犯了一个错误,并尝试使用文档管理器使用错误的文档类型,则结果取决于类型的组合。例如,a BinaryDocumentManager将尝试将文档内容解释为二进制。JSONDocumentManager并且XMLDocumentManager是最特别的,因为如果一个文件是不是在自己的格式,也不会解析。在大多数FailedRequestException情况下,如果管理者无法确定文档类型,将收到异常错误,并带有默认错误。

    使用Handles进行IO流输入输出

    • 与MarkLogic交互时,Java客户端API使用Handles进行I / O交互。
    • Handles是使用Java Client API的关键。Handles用Adapter设计模式来实现对类型多样且可扩展的内容格式集的强类型读写。例如,您可以创建一个com.marklogic.client.io.DOMHandle读取或写入XML DOM数据。
    1
    2
    3
    4
    5
    6

    XMLDocumentManager docMgr = client.newXMLDocumentManager();
    Document doc = docMgr.read(docURI, new DOMHandle()).get();

    // writing
    docMgr.write(docURI, new DOMHandle(someDocument));

    Java客户端API预先定义了许多句柄实现。以下软件包包含Handles类:

    • com.marklogic.client.io -Handles类标准表示,如String,File和DOM。
    • com.marklogic.extra-处理诸如DOM4J和GSON之类的第三方格式的类。使用这些句柄类需要Java客户端API分发中未包含的第三方库。
      一些Handles支持读取和写入操作。
    • 例如,您可以使用FileHandle来读写文件。一些Handles有特殊用途。
    • 例如,您SearchHandle用于处理搜索操作的结果。有关Handles及其作用的完整列表,请参见Java Client API文档中的com.marklogic.client.io包。

    一些Java Client API方法使你可以使用不需要显式创建Handles的I / O快捷方式。这些快捷方式方法始终带有As后缀,例如readAs。例如,XMLDocumentManager.read上面显示的方法有一个XMLDocumentManager.readAs对应的对象,它为您隐式创建了Handles。例如:

    1
    2
    3
    4
    5
    // 阅读
    Document doc = docMgr.readAs(docURI, Document.class);

    // 编写
    docMgr.writeAs(docURI, someDocument);

    指定内容格式

    一些Hand 大专栏  “Spring Boot+Marklogic实战应用(1)”les可以与多种文档格式一起使用。例如,InputStream可以提供任何格式的内容,因此InputStreamHandle可以用于任何文档格式。如果在Handles类型中内容格式不是显式的,则使用Handles的setFormat方法来指定它。例如,以下调用告诉Java Client API该句柄可以与JSON内容一起使用:

    1
    new InputStreamHandle().setFormat(Format.JSON);

    ==不能为所有句柄类型设置格式。例如,DOMHandle只能用于读取和写入XML,因此您不能指定格式。==

    Handles类型快速参考

    并非所有Handles都支持所有内容类型。此外,尽管大多数Handles都可以用于读取或写入,但其中一些Handles受到更多限制。本节提供有关每个Handles类支持的内容格式,操作和数据类型的快速指南。SearchHandle,不包括特殊用途的Handles类。
    在这里插入图片描述

    处理示例

    • 以下代码使用DOMHandle来从服务器将XML文档读取到内存中的DOM对象中:
    1
    2
    3
    4
    XMLDocumentManager docMgr = client.newXMLDocumentManager();
    DOMHandle handle = new DOMHandle();
    docMgr.read(docURI, handle);
    org.w3c.dom.Document document = handle.get();
    • 以下代码使用DOMHandle将XML文档写入MarkLogic。假设document是一些先前初始化的内存XML DOM文档。
    1
    2
    3
    4
    XMLDocumentManager docMgr = client.newXMLDocumentManager();
    DOMHandle handle = new DOMHandle();
    handle.set(document);
    docMgr.write(docId, handle);

    ####此处附上本人测试代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DatabaseClient client =
    DatabaseClientFactory.newClient(
    "localhost", 8000, "xiaobai",
    new DatabaseClientFactory.DigestAuthContext("admin", "111111"));

    XMLDocumentManager docMgr = client.newXMLDocumentManager();
    DOMHandle handle = new DOMHandle();
    docMgr.read("/books.xml", handle);
    Document document = handle.get();
    System.out.println("-------------------------------------");
    System.out.println(document);
    client.release();

    在这里插入图片描述

    ==至于为什么Document为null 我也不太了解,但是我确实又能从Document中拿到数据,问了下技术经理说好像W3C的Document就这样坑,建议不要用它的Document,以后坑更多==


    更多技术分享欢迎登录我的博客

    http://www.blbk.info

    • 本笔记不允许任何个人和组织转载
  • 相关阅读:
    PAT-A 1004. Counting Leaves
    PAT-A 1094. The Largest Generation
    图的邻接表表示及其BFS遍历
    图的邻接表表示及其遍历
    PAT-A 1024. Palindromic Number
    PAT-A 1019. General Palindromic Number
    PAT-B 1007.素数对猜想
    PAT-A 1048. Find Coins
    PAT-A 1037. Magic Coupon
    PAT-A 1099.Build A Binary Search Tree
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12375955.html
Copyright © 2011-2022 走看看