Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ms excel兼容csv文件,表示MarkLogic目录中的所有文档_Marklogic - Fatal编程技术网

ms excel兼容csv文件,表示MarkLogic目录中的所有文档

ms excel兼容csv文件,表示MarkLogic目录中的所有文档,marklogic,Marklogic,如何最好地使用XCCJava客户端和Tomcat和MarkLogic使MS-Excel兼容csv文件,该文件表示MarkLogic目录中的所有文档都位于远程位置。目录中的文档数量约为15000个。第一部分,获取目录中的所有文档,已准备就绪,可以从 正如我在那里的回答中所指出的,如果您需要进一步的限制,您可以使用其他cts:query术语cts:query查询cts:directory query 接下来,您需要将每个XML文档转换为CSV。这相当简单,但是您必须知道XML是如何构造的,或者有一些

如何最好地使用
XCC
Java客户端和
Tomcat
MarkLogic
使
MS-Excel
兼容
csv
文件,该文件表示MarkLogic目录中的所有文档都位于远程位置。目录中的文档数量约为15000个。

第一部分,获取目录中的所有文档,已准备就绪,可以从

正如我在那里的回答中所指出的,如果您需要进一步的限制,您可以使用其他
cts:query
术语
cts:query
查询
cts:directory query

接下来,您需要将每个XML文档转换为CSV。这相当简单,但是您必须知道XML是如何构造的,或者有一些方法来推断它。对于这个例子,我会说我总是在一些根元素下有简单的子元素
a
b
c
d
。因此,查询需要为这些元素生成一个CSV头,后面是CSV行

我们可能还想从调用者那里提交目录URI。如果您使用REST,那么将使用
xdmp:get请求字段
,但对于XCC,它是一个外部值

declare variable $DIRECTORY-URI as xs:string external ;

declare function local:csv($root as element()) as xs:string
{
  string-join(($root/a, $root/b, $root/c, $root/d), ',')
};

'A,B,C,D',
cts:search(
  collection(),
  cts:directory-query($DIRECTORY-URI, 'infinity'))/local:csv(*)
同样,使
local:csv
适用于您的应用程序需要一些XML知识或推断其结构的方法。您可能还需要将一些值放在双引号中。但这种基本结构是解决这个问题的最有效方法之一。我避免了任何XQuery FLWOR表达式,因此结果可以流式传输

另一种方法是使用范围索引和
cts:query
来限制结果,然后将JSON转换为CSV。这将更加有效,因为不会提取片段。但是,对于某些XML结构来说,这将无法很好地工作,而且您可能无法为每个CSV字段创建范围索引

declare variable $DIRECTORY-URI as xs:string external ;

declare function local:csv($ja as json:array) as xs:string
{
  string-join(json:array-values($ja), ',')
};

'A,B,C,D',
local:csv(
  cts:value-tuples(
    (cts:element-reference(xs:QName('a')),
     cts:element-reference(xs:QName('b')),
     cts:element-reference(xs:QName('c')),
     cts:element-reference(xs:QName('d'))),
    (),
    cts:directory-query($DIRECTORY-URI, 'infinity')))

这听起来像是“你能帮我做我的工作吗?”之类的问题。@EricBloch我完全同意。请按照我在这个链接上的原始问题:。。。。谢谢
declare variable $DIRECTORY-URI as xs:string external ;

declare function local:csv($ja as json:array) as xs:string
{
  string-join(json:array-values($ja), ',')
};

'A,B,C,D',
local:csv(
  cts:value-tuples(
    (cts:element-reference(xs:QName('a')),
     cts:element-reference(xs:QName('b')),
     cts:element-reference(xs:QName('c')),
     cts:element-reference(xs:QName('d'))),
    (),
    cts:directory-query($DIRECTORY-URI, 'infinity')))