My XML Response Load appears as below
<entries>
<id>1</id>
<UseCountIds>100</UseCountIds>
<UseCountIds>200</UseCountIds>
<UseCountIds>300</UseCountIds>
</entries>
这里的"条目"是具有子元素的父节点,即"id","UseCountIds"。上面的例子是id=1。同样,id=2 或 id=3 等也有很多"条目"。
"id"是一种独特的值。
我已经做了一个XQuery来从XML有效负载中提取子元素。下面是使用的 Xquery
let $entries := /root/entries
return
for $entry in $entries
return
<entries>
{
$entry/id,
<UseCountIds>{data($entry/UseCountIds)}</UseCountIds>
}
</entries>
问题是,如果将上面的 XQuery 输出加载到.csv文件中,它显示为
id,UseCountIds
1,100 200 300
UseCountId(多个值(显示在以空格分隔的列中。
我的要求是具有如下所示的所需输出
id,UseCountIds
1,100
1,200
1,300
此外,UseCountIds 不限于仅出现 3 次。对于唯一的"id"可以有"n"否。的 UseCountIds .
将 UseCountId 连接到行级别中的唯一"id"总是好的。
请分享您的想法,如何调整 XQuery 以获得上面提到的所需输出。
谢谢T G
目前尚不清楚您如何从 XQuery 的输出生成 CSV,但是,如果我可以假设您只需要源 XML 中的每个UseCountIds
都有一个 entries
元素即可生成所需的 CSV 数据,那么这是一个可能的 XQuery :
for $c in /root/entries/UseCountIds
return
<entries>
{
$c/preceding-sibling::id,
$c
}
</entries>
如果没有产生所需的输出,那么请发布 XQuery 输出应该如何。
即使没有子UseCountIds
也能返回entries
:
for $e in /root/entries
let $id := $e/id
let $useCountIds := $e/UseCountIds
return
if($useCountIds) then
for $c in $useCountIds
return
<entries>
{
$id,
$c
}
</entries>
else
<entries>
{
$id,
<UseCountIds></UseCountIds>
}
</entries>
demo