MarkLogic-如何将PDF保存到文件系统

MarkLogic-如何将PDF保存到文件系统,marklogic,Marklogic,我从MarkLogic检索pdf文件列表。我想把它们保存到磁盘上。我尝试了xdmp:save(),但无法使其工作 (:from query return: /pdf/2179661.pdf /pdf/1092813.pdf :) let $list := cts:uris((),(),cts:collection-query("/pdf")) for $pdf in $list let $file-name := fn:substring-after($pdf,"/

我从MarkLogic检索pdf文件列表。我想把它们保存到磁盘上。我尝试了
xdmp:save()
,但无法使其工作

(:from query return:
       /pdf/2179661.pdf
       /pdf/1092813.pdf
:)

let $list := cts:uris((),(),cts:collection-query("/pdf"))
for $pdf in $list
let $file-name := fn:substring-after($pdf,"/pdf/")
   return xdmp:save(concat("/output-pdf/",$file-name),$pdf)
返回此错误:

错误:[1.0-ml]XDMP-ARGTYPE:(错误:XPTY0004)XDMP:save(“/output pdf/2179661.pdf”, “/pdf/2179661.pdf”)--arg2不是node()类型

使用时,第二个参数是要保存的
节点()

在您发布的代码中,您传递的是PDF文档的URI,而不是实际的
document-node()

使用以下任一方法获取文档:

let $list-pdf := cts:uris((),(),cts:collection-query("/pdf")) 
for $pdf in $list-pdf 
let $file-name := fn:substring-after($pdf,"/pdf/") 
return xdmp:save(concat("/output-pdf/",$file-name), fn:doc($pdf))
let $list-pdf := cts:search(/,cts:collection-query("/pdf")) 
for $pdf in $list-pdf 
let $file-name := fn:substring-after($pdf/base-uri(), "/pdf/") 
return xdmp:save(concat("/output-pdf/",$file-name), $pdf)
或者,您可以使用并引用文档的:

let $list-pdf := cts:uris((),(),cts:collection-query("/pdf")) 
for $pdf in $list-pdf 
let $file-name := fn:substring-after($pdf,"/pdf/") 
return xdmp:save(concat("/output-pdf/",$file-name), fn:doc($pdf))
let $list-pdf := cts:search(/,cts:collection-query("/pdf")) 
for $pdf in $list-pdf 
let $file-name := fn:substring-after($pdf/base-uri(), "/pdf/") 
return xdmp:save(concat("/output-pdf/",$file-name), $pdf)

xdmp:save()
应该是要使用的方法。你能分享你正在使用的代码,并提供更多细节来更好地描述“无法让它工作”吗?例如,您是否遇到错误,没有保存到目录中,等等?让$list pdf:=cts:uris((),(),cts:collection query(“/pdf”))在$list pdf中查找$pdf让$file name:=fn:substring在($pdf,“/pdf/”)之后返回xdmp:save(concat(“/output pdf/”,$file name),$pdf)非常感谢。这意味着我不需要详细说明