MarkLogic-如何将PDF保存到文件系统
我从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,"/
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)非常感谢。这意味着我不需要详细说明