gpt4 book ai didi

MarkLogic XML 到 JSON 的转换

转载 作者:行者123 更新时间:2023-12-01 10:45:31 25 4
gpt4 key购买 nike

我正在尝试将此 XML 文件转换为 JSON,但无法取得任何成功。我的 XML 中有两个子元素,但它只返回最后一个。如何获取JSON格式的两条记录?

XML

 <Carousel>
<Video>
<Title>1</Title>
<Abstract>3</Abstract>
<FileName type="custom" mediatype="image">D</FileName>
<HasAccess>4</HasAccess>
</Video>
<Video>
<Title>1</Title>
<Abstract>2</Abstract>
<FileName type="custom" mediatype="image">D</FileName>
<HasAccess>3</HasAccess>
</Video>
</Carousel>

XQUERY:

import module namespace json = "http://marklogic.com/xdmp/json"  at "/MarkLogic/json/json.xqy";

let $custom := let $config := json:config("custom")
return
(
map:put( $config, "whitespace", "ignore" ),

$config
)
let $XML := $XMLFile (: XML content :)
return json:transform-to-json($XML,$custom)

当前输出:

{"Carousel":{"Video":{"Title":"1", "Abstract":"2", "FileName":{"type":"custom", "mediatype":"image", "_value":"D"}, "HasAccess":"3"}}}

我也尝试使用默认的“基本”JSON 设置 json:transform-to-json($XML) 但出现类似错误

XML Element not in expected namespace [http://marklogic.com/xdmp/json/basic] (json:INVALIDELEM): Carousel

它仅在“完整”模式下工作,但它以 JSON 格式添加了一些额外信息,如 _attribute 等,这在我的输出 JSON 中不是必需的。

请帮助我或给出任何想法为什么它没有返回 JSON 格式的完整输出。

最佳答案

初学者需要将重复元素标记为数组元素。这似乎有效:

xquery version "1.0-ml";

import module namespace json = "http://marklogic.com/xdmp/json" at "/MarkLogic/json/json.xqy";

let $xml := <Carousel>
<Video>
<Title>1</Title>
<Abstract>3</Abstract>
<FileName type="custom" mediatype="image">D</FileName>
<HasAccess>4</HasAccess>
</Video>
<Video>
<Title>1</Title>
<Abstract>2</Abstract>
<FileName type="custom" mediatype="image">D</FileName>
<HasAccess>3</HasAccess>
</Video>
</Carousel>

let $custom :=
let $config := json:config("custom")
let $_ := map:put( $config, "whitespace", "ignore" )
let $_ := map:put( $config, "array-element-names", "Video" )
return $config

return json:transform-to-json($xml,$custom)

如果你愿意,你也可以抑制属性。该配置支持各种选项,我建议查看其文档:

http://docs.marklogic.com/json:config

喂!

关于MarkLogic XML 到 JSON 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26858466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com