下面是XML输出,我必须从详细信息字段中提取值 - 第一个值作为列名,第二个值作为行中的值。
示例:列名称 - renamedCount及其行值为64 列名称-successUpdateCount,其行值为64 等等..
<root>
<details>
<values>renamedCount</values>
<values>64</values>
<values>successUpdateCount</values>
<values>64</values>
<values>totalCreateCount</values>
<values>0</values>
<values>successRowCount</values>
<values>64</values>
<values>invalidCount</values>
<values>0</values>
<values>totalUpdateCount</values>
<values>4211</values>
<values>failedCount</values>
<values>64</values>
<values>totalRowCount</values>
<values>0</values>
<values>4275</values>
<occurrences>0</occurrences>
<localMessageText>Accounts: 64 (0/64) rows successful, 4211 ignored </localMessageText>
<type>hierarchyRowsProcessed</type>
</details>
<details>
</root>
请建议如何将一个值指定为变量名称,将第二个值指定为值?
预先感谢您的支持, 凯利
答案 0 :(得分:0)
分组或窗口条款对此有帮助。
例如,可以使用整数除以2来计算行号,并使用它来计算组值:
let $doc :=
<root>
<details>
<values>renamedCount</values>
<values>64</values>
<values>successUpdateCount</values>
<values>64</values>
<values>totalCreateCount</values>
<values>0</values>
<values>successRowCount</values>
<values>64</values>
<values>invalidCount</values>
<values>0</values>
<values>totalUpdateCount</values>
<values>4211</values>
<values>failedCount</values>
<values>64</values>
<values>totalRowCount</values>
<values>0</values>
<values>4275</values>
<occurrences>0</occurrences>
<localMessageText>Accounts: 64 (0/64) rows successful,
4211 ignored </localMessageText>
<type>hierarchyRowsProcessed</type>
</details>
</root>
for $values at $pos in $doc/details/values
let $row-number := ($pos + 1) idiv 2
group by $row-number
return <row number="{$row-number}">{$values}</row>
它需要XQuery 3.0进行分组和窗口化。可以使用Zorba here测试查询。