2

我有一个数组,我想用取自特定 XML 节点的字符串填充它,就像在这个伪代码示例中一样:

let $array := array {}

for $child in $collection
where contains(data($child), "Hey")
do $array := array:append($array, data($child))

正确的代码如何执行这样的操作?

所以如果我有这个 XML

<root>
    <child>Hey</child>
    <child>Ho</child>
    <child>Hey Ho</child>
</root>

我希望数组是

array ["Hey", "Hey Ho"]
4

1 回答 1

5

XQuery 是一种函数式语言。因此,变量一旦被声明就不能被重新分配。

以下代码应该可以解决问题:

array {
  for $child in $collection
  where contains(data($child/node1), "Hey")
  return $child/node2
}

请注意,值的本机 XQuery 数据类型是一个序列。根据您的用例,也许您根本不需要数组。

于 2017-01-17T15:18:44.993 回答