首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过名称获取同级节点的值?

如何通过名称获取同级节点的值?
EN

Stack Overflow用户
提问于 2014-02-25 15:08:39
回答 2查看 307关注 0票数 0

我是OracleServiceBus和XQuery的新手。我的要求如下。

'FieldName‘元素可以有从'udf1’到'udf10‘的值。

代码语言:javascript
复制
Input XML
<UserDefinedFields>
   <UserDefinedField>
      <FieldName>udf5</FieldName>
      <ValueAsString>UDF5Value</ValueAsString>
    </UserDefinedField>
   <UserDefinedField>
      <FieldName>udf8</FieldName>
      <ValueAsString>UDF8Value</ValueAsString>
    </UserDefinedField>
   <UserDefinedField>
      <FieldName>udf3</FieldName>
      <ValueAsString>UDF3Value</ValueAsString>
    </UserDefinedField>
</UserDefinedFields>

Expected XML

        <udf1></udf1>
        <udf2></udf2>
        <udf3>UDF3Value</udf3>
        <udf4></udf4>
        <udf5>UDF5Value</udf5>
        <udf6></udf6>
        <udf7></udf7>
        <udf8>UDF8Value</udf8>
        <udf9></udf9>
        <udf10></udf10>

任何回答都会有很大帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-25 17:35:48

谢谢@Jens Erat。

下面的代码对我有用。

代码语言:javascript
复制
   for $UserDefinedField in $UserDefinedFields/UserDefinedField
   for $i in 1 to 20
   let $udf := concat('udf', $i)
   return if ($UserDefinedField/FieldName = $udf ) then
   element {$udf}{data($UserDefinedField/ValueAsString)}
   else ()
票数 0
EN

Stack Overflow用户

发布于 2014-02-25 16:02:37

用于生成元素的用户计算元素结构:

代码语言:javascript
复制
for $i in 1 to 10
let $udf := concat('udf', $i)
return element { $udf } { data(//UserDefinedField[FieldName = $udf]/ValueAsString) }

我认为Oracle支持它们,使用MS,这是不可能的,您必须枚举所有这些:

代码语言:javascript
复制
(
  element udf1 { data(//UserDefinedField[FieldName = 'udf1']/ValueAsString),
  element udf2 { data(//UserDefinedField[FieldName = 'udf1']/ValueAsString),
  (: ... :)
  element udf10 { data(//UserDefinedField[FieldName = 'udf10']/ValueAsString)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22018211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档