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

标签 java xml xquery osb oracle-service-bus

<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中的结果 不同值在 Oracle 服务总线中不起作用,因此我希望使用 java 方法来获取唯一名称

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

最佳答案

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

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>

关于java - 在 java、OSB、XQuery 中从 XML 获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20494042/

相关文章:

java - web.xml中如何通过URL传递参数?

java - 通过改变指定文件路径的方法来获取不同的文件大小

c# - 从 DataTable 创建 XML

xml - 查询包含多个 XML 对象的日志文件

java - 列表一直显示为空

java - 根据触摸点计算旋转时的小偏移量

javascript - 多个字符串的单个 XPath?

java - 简单的框架。集合中可以保留空值吗?

xml - Xquery 结果格式不正确

xquery - 如何从 jsoniq 或 javascript 中的 json 文档获取所有字符串?