首页 文章

在java,OSB,XQuery中从XML获取不同的值

提问于
浏览
1
<data>  
  <info>  
    <name>A</name>  
  </info>  
  <info>  
    <name>B</name>  
  </info>  
  <info>  
    <name>A</name>  
  </info>  
<info>  
    <name>C</name>  
  </info>  
<info>  
    <name>B</name>  
  </info>  
</info>

有没有办法获得像java或OSB或Xquery中的结果distinct-values在Oracle服务总线中不起作用所以我想让java方法获得唯一的名称

<data>  
<info>  
<name>A</name>  
</info>  
<info>  
<name>B</name>  
</info>   
<info>  
<name>C</name>  
</info>  
</data>

2 回答

  • 2

    我假设您要根据名称值对所有信息元素进行分组,并且只输出每个组中的一个信息?

    let $data :=
    <data>  
      <info>  
        <name>A</name>  
      </info>  
      <info>  
        <name>B</name>  
      </info>  
      <info>  
        <name>A</name>  
      </info>  
      <info>  
        <name>C</name>  
      </info>  
      <info>  
        <name>B</name>  
      </info>  
    </data>  
    return
      <data>{
        let $distinct-names := distinct-values($data/info/name)
        for $name in $distinct-names
        let $infos := $data/info[name eq $name]
        return
          $infos[1]
      }</data>
    

    我想你也可以使用“group by”扩展名:

    let $data :=
    <data>  
      <info>  
        <name>A</name>  
      </info>  
      <info>  
        <name>B</name>  
      </info>  
      <info>  
        <name>A</name>  
      </info>  
      <info>  
        <name>C</name>  
      </info>  
      <info>  
        <name>B</name>  
      </info>  
    </data>  
    return
      <data>{
        for $info in $data/info
        group $info as $infos by $info/name as $name
        return 
          $infos[1]
      }</data>
    

    以上两个查询都返回:

    <data>
      <info><name>A</name></info>
      <info><name>B</name></info>
      <info><name>C</name></info>
    </data>
    
  • 0

    我已经解决了这个问题

    <CUSTOMER_NO_1>{ 
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[1]
    }</CUSTOMER_NO_1>
    <CUSTOMER_NO_2>{    
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[2]
    }</CUSTOMER_NO_2>
    <CUSTOMER_NO_3>{    
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[3]
    }</CUSTOMER_NO_3>
    <CUSTOMER_NO_4>{    
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[4]
    }</CUSTOMER_NO_4>
    <CUSTOMER_NO_5>{    
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[5]
    }</CUSTOMER_NO_5>
    <CUSTOMER_NO_6>{    
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[6]
    }</CUSTOMER_NO_6>
    <CUSTOMER_NO_7>{    
        (for $test in fn:distinct-values($data_ENV1/ns0:data/ns0:CUST/ns0:CUSTNO)
            return $test)[7]
    }</CUSTOMER_NO_7>
    

相关问题