【问题标题】:Replace XML Distinct-Values Oracle Service Bus 11G using Xquery使用 Xquery 替换 XML Distinct-Values Oracle Service Bus 11G
【发布时间】:2015-06-17 18:08:33
【问题描述】:

如何替换不同值情况下的 XML 结果?

我得到了 groupId 的值,但我想将其替换为 groupName 可以被客户读取,而不仅仅是数字。

<TestList>
  <Test>
    <number>1000</number>
    <groupId>2323</groupId>
  </Test>
  <Test>
    <number>2000</number>
    <groupId>3434</groupId>
  </Test>
  <Test>
    <number>3000</number>
    <groupId>2323</groupId>
  </Test>
  <Test>
    <number>4000</number>
    <groupId>4444</groupId>
  </Test>
</TestList>

预期结果

<TestList>
  <Test>
    <number>1000</number>
    <groupId>Group 1</groupId>
  </Test>
  <Test>
    <number>2000</number>
    <groupId>Group 2</groupId>
  </Test>
  <Test>
    <number>3000</number>
    <groupId>Group 1</groupId>
  </Test>
  <Test>
    <number>4000</number>
    <groupId>Group 3</groupId>
  </Test>
</TestList>

谢谢,

安德烈

【问题讨论】:

    标签: xml replace xquery osb distinct-values


    【解决方案1】:

    在 11g 中,我认为您可以通过扩展使用 BEA 组。试试这样的:

    declare variable $data :=
    <TestList>
      <Test>
        <number>1000</number>
        <groupId>2323</groupId>
      </Test>
      <Test>
        <number>2000</number>
        <groupId>3434</groupId>
      </Test>
      <Test>
        <number>3000</number>
        <groupId>2323</groupId>
      </Test>
      <Test>
        <number>4000</number>
        <groupId>4444</groupId>
      </Test>
    </TestList>;
    
    <TestList>{
      let $groups :=
        for $test in $data/Test
        group $test as $testGroup by $test/groupId as $groupId
        return
          <group>{$testGroup}</group>
      for $group at $pos in $groups,
          $test in $group/Test
      return
        <Test>
          {$test/number}
          <groupId>{$pos}</groupId>
        </Test>
    }</TestList>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多