如何使用 XQuery 输出具有相同名称的 XML 节点[多次出现]


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

相关内容

  • 没有找到相关文章

最新更新