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

如何使用XQuery基于两个XML生成动态元素与对应值?

用XQuery实现基于两个XML片段生成动态元素及对应值

你需要将两组XML数据映射生成目标元素:第一组<td>的文本转小写作为新元素名,第二组的元素值按位置对应填充。

实现代码

根据输入XML的结构,提供两种场景的实现方式:

场景1:输入XML有根节点

假设输入XML整理为以下结构:

<source>
  <element-names>
    <td>USERID</td>
    <td>NAME</td>
    <td>RATING</td>
  </element-names>
  <values>
    <id>1</id>
    <name>Tom</name>
    <grade>A</grade>
  </values>
</source>

对应的XQuery代码:

for $name at $pos in /source/element-names/td,
    $value at $pos in /source/values/*
return element {lower-case($name/text())} {$value/text()}

场景2:输入为零散元素(直接绑定变量)

如果输入是无结构的零散元素,可直接将两组元素绑定到变量处理:

let $element-names := (<td>USERID</td>, <td>NAME</td>, <td>RATING</td>),
    $values := (<id>1</id>, <name>Tom</name>, <grade>A</grade>)
for $name at $pos in $element-names,
    $value at $pos in $values
return element {lower-case($name/text())} {$value/text()}

代码说明

  • 用at $pos关键字同步遍历两组元素,确保位置一一对应;
  • 通过lower-case()函数将<td>文本转为小写,作为新元素的名称;
  • 动态生成元素,把对应位置的数据元素文本作为新元素内容。

执行结果

运行上述代码后,将得到期望的输出:

<userid>1</userid>
<name>Tom</name>
<rating>A</rating>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:45:34