3

我有一个 xquery 端点,它使用 xdmp:document-insert 加载进入数据库的文件。当尝试上传具有“ISO-8859-1”编码的 XML 文档时失败。以下是我的代码

declare  %rapi:transaction-mode("update") function repoLoad:post($context as map:map, $params  as map:map,$input as document-node()*) as document-node()*
{

    let $filename := xdmp:get-request-field-filename("upload")
    let $contentType := xdmp:get-request-field-content-type("upload")

    let $uri := "/documents/"

    let $_ := xdmp:document-insert($uri, xdmp:get-request-field("upload"),(xdmp:default-permissions()), ("raw"))

    return $uri

};

对于非 UTF8 编码的 xml 文档,这将失败。我得到以下异常。任何解决方法??

错误:AppRequestTask::run: XDMP-DOCUTF8SEQ: 第 1 行的 UTF-8 转义序列无效——文档不是 UTF-8 编码的

4

1 回答 1

2

如果您可以使用声明编码的 XML prolog 生成有效负载,则应该可以:

<?xml version="1.0" encoding="ISO-8859-1">
... rest of the document ...

否则,您可以在服务器上尝试以下操作来生成 XML 文档以供插入:

xdmp:document-insert(
    $uri,
    xdmp:binary-decode(
        xdmp:unquote(
            xdmp:get-request-field("upload"), (), "format-binary"
            ),
        "ISO-8859-1"
        ),
    ... collection, permissions, and other arguments ...
    )

希望有帮助,

于 2016-02-17T03:54:21.577 回答