You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XQuery出现‘Item expected, sequence found’错误的问题排查与解决请求

解决XQuery中"Item expected, sequence found"错误并实现城市名称逗号分隔输出

我来帮你分析问题并搞定这个报错。先说说为什么会出现这个错误:

你原来的代码里,$p是满足state > 15条件的所有provider节点组成的序列(也就是Smith和Adams这两个节点)。当你调用$p/city/text()时,得到的是多个文本节点的序列("London"和"Athens"),而concat()函数的参数要求是单个项(item),它没法直接处理序列,所以就抛出了"Item expected, sequence found"的错误。

正确的解决方案

要实现把满足条件的城市名称用逗号分隔输出,你应该用XQuery内置的string-join()函数——这个函数专门用来将字符串序列拼接成一个单一的字符串,完美适配你的需求。

修改后的代码如下:

let $p := doc("providers.xml")/data/providers/provider where $p/state > 15
return <cities>{string-join($p/city/text(), ' , ')}</cities>

或者更简洁的写法(直接提取目标城市序列):

let $target-cities := doc("providers.xml")/data/providers/provider[state > 15]/city/text()
return <cities>{string-join($target-cities, ' , ')}</cities>

代码解释

  • string-join($sequence, $separator):第一个参数是要拼接的字符串序列,第二个参数是分隔符。它会自动遍历序列中的每个元素,用指定的分隔符把它们连接成一个字符串。
  • 这样修改后,最终会输出一个<cities>元素,内容是London , Athens,完全符合你的预期。

内容的提问来源于stack exchange,提问作者Cryptter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:27:47