Marklogic - 将 xml 转换为 csv
Marklogic - convert xml to csv
Marklogic 有没有类似json:transform-to-json 的函数把xml 转换成csv。我可以转换为 json 格式,但不确定如何从 xml 转换为 csv 格式并保存到磁盘。
let $uris := cts:uris((),
(),
cts:and-query((
cts:collection-query("/citation"),
cts:field-range-query("sdt","<","2017-10-01"),
cts:field-range-query("edt",">","2016-09-30"),
cts:or-query(cts:field-range-query("fy","=",2017)),
cts:not-query(cts:field-word-query("dc","a","case-insensitive"))
))
)
for $uri in $uris
let $doc := fn:doc($uri)
let $copymeta := <meta:Metadata>
{$doc//meta:Metadata/*}
</meta:Metadata>
let $newdoc := <mdr:record>
{ $copymeta }
</mdr:record>
(: get information for each element:)
let $metadata := $newdoc/meta:Metadata
let $Title := ($metadata/meta:Title)
let $Title :=fn:string-join($Title,",")
let $DateOfSummary:= ($metadata/meta:DateOfSummary)
let $DateOfSummary:=fn:string-join($DateOfSummary,",")
let $quote:=
for $value in($Title,$DateOfSummary)
return fn:concat(""",$value,""")
您可以在服务器端 JavaScript、XQuery 或 XSLT 中编写一个转换,迭代 XML 文档,将 CSV 行投影为字符串。
在 MarkLogic 9 上,作为替代方案,您可以编写一个 TDE 模板来投影 XML 文档中的 CSV 行,
http://docs.marklogic.com/tde:node-data-extract
http://docs.marklogic.com/guide/app-dev/TDE
http://docs.marklogic.com/guide/sql/creating-template-views
并将输出方法设置为 "sparql-results-csv",然后将投影行返回给客户端:
http://docs.marklogic.com/xdmp:set-response-output-method
根据输出方法,应用服务器应将行序列化为 CSV。
如果您需要根据查询从文档中提取 CSV 行,您可以使用 TDE 为文档建立索引并向 /v1/rows 端点发出请求:
http://docs.marklogic.com/REST/client/row-management
希望对您有所帮助,
Marklogic 有没有类似json:transform-to-json 的函数把xml 转换成csv。我可以转换为 json 格式,但不确定如何从 xml 转换为 csv 格式并保存到磁盘。
let $uris := cts:uris((),
(),
cts:and-query((
cts:collection-query("/citation"),
cts:field-range-query("sdt","<","2017-10-01"),
cts:field-range-query("edt",">","2016-09-30"),
cts:or-query(cts:field-range-query("fy","=",2017)),
cts:not-query(cts:field-word-query("dc","a","case-insensitive"))
))
)
for $uri in $uris
let $doc := fn:doc($uri)
let $copymeta := <meta:Metadata>
{$doc//meta:Metadata/*}
</meta:Metadata>
let $newdoc := <mdr:record>
{ $copymeta }
</mdr:record>
(: get information for each element:)
let $metadata := $newdoc/meta:Metadata
let $Title := ($metadata/meta:Title)
let $Title :=fn:string-join($Title,",")
let $DateOfSummary:= ($metadata/meta:DateOfSummary)
let $DateOfSummary:=fn:string-join($DateOfSummary,",")
let $quote:=
for $value in($Title,$DateOfSummary)
return fn:concat(""",$value,""")
您可以在服务器端 JavaScript、XQuery 或 XSLT 中编写一个转换,迭代 XML 文档,将 CSV 行投影为字符串。
在 MarkLogic 9 上,作为替代方案,您可以编写一个 TDE 模板来投影 XML 文档中的 CSV 行,
http://docs.marklogic.com/tde:node-data-extract
http://docs.marklogic.com/guide/app-dev/TDE
http://docs.marklogic.com/guide/sql/creating-template-views
并将输出方法设置为 "sparql-results-csv",然后将投影行返回给客户端:
http://docs.marklogic.com/xdmp:set-response-output-method
根据输出方法,应用服务器应将行序列化为 CSV。
如果您需要根据查询从文档中提取 CSV 行,您可以使用 TDE 为文档建立索引并向 /v1/rows 端点发出请求:
http://docs.marklogic.com/REST/client/row-management
希望对您有所帮助,