无法将XMLSlurper结果推送到Set中

里卡多以色列眼

我开始使用Groovy(2.4.12),该引擎将具有与Java 1.8.0_271相同的版本,并且我试图从XMLSlurper的结果中查找唯一值,因此尝试推送到Set。但是我得到了完整的列表,而不是唯一的值。

这是代码段代码:

        import com.sap.gateway.ip.core.customdev.util.Message
        import groovy.xml.MarkupBuilder
        import java.time.LocalDate
        import java.time.format.DateTimeFormatter
        import java.text.DecimalFormat
        import java.util.HashSet
        
def Message processData(Message message) {
        Reader reader = message.getBody(Reader)
        def DELVRY07 = new XmlSlurper().parse(reader)
            
        
            Set mySet = DELVRY07.IDOC.E1EDL20.E1EDL24.VGBEL.toSet();
                    //println mySet.size()
                    mySet.each { order ->
                        println order
                    }
        return message;
    }

输入XML

    <?xml version="1.0"?>
<DELVRY07>
    <IDOC BEGIN="1">
    <E1EDL20 SEGMENT="1">
         <E1EDL24 SEGMENT="1">
                <POSNR>000010</POSNR>
                <VGBEL>0010001035</VGBEL>
            </E1EDL24>
            <E1EDL24 SEGMENT="1">
                <POSNR>000020</POSNR>
                <VGBEL>0010001036</VGBEL>
            </E1EDL24>
            <E1EDL24 SEGMENT="1">
                <POSNR>900001</POSNR>
                <VGBEL>0010001035</VGBEL>
            </E1EDL24>
            <E1EDL24 SEGMENT="1">
                <POSNR>900002</POSNR>
                <VGBEL>0010001035</VGBEL>
            </E1EDL24>
            <E1EDL24 SEGMENT="1">
                <POSNR>900003</POSNR>
                <VGBEL>0010001036</VGBEL>
            </E1EDL24>
            <E1EDL24 SEGMENT="1">
                <POSNR>900004</POSNR>
                <VGBEL>0010001036</VGBEL>
            </E1EDL24>
            <E1EDL24 SEGMENT="1">
                <POSNR>900005</POSNR>               
                <VGBEL>0010001036</VGBEL>
            </E1EDL24>
        </E1EDL20>
      </IDOC>
</DELVRY07>

输出量

0010001035
0010001036
0010001036
0010001036
0010001035
0010001035
0010001036

只有两个唯一值,因此预期结果仅为0010001035和0010001036。

我将不胜感激任何意见或建议。谢谢,

里克

迈克尔·复活节

这里的工作示例

考虑下面的代码(修改后为re:)Message

def Message processData(Message message) {
    def reader = message.getBody()
    def DELVRY07 = new XmlSlurper().parse(reader)

    // crucial code:
    def mySet = DELVRY07.IDOC.E1EDL20.E1EDL24.VGBEL.inject(new HashSet(),{
        acc, node -> acc << node.text()
    })
    
    mySet.each { order ->
        println order
    }

    return message;
}

原始代码的问题在于,返回的GPath表达式NodeChildren将作为字符串值打印到控制台,但这是它自己的对象,因此使用text()很重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript:将每个 querySelectorAll 结果推送到变量中

来自分类Dev

无法使函数将数组推送到NodeJS中的redis列表

来自分类Dev

无法将子文档推送到Mongoose中的文档数组

来自分类Dev

查找并推送结果将两个对象推送到数组中

来自分类Dev

Rails将元素推送到结果查询

来自分类Dev

猫鼬将结果推送到数组

来自分类Dev

无法将更改推送到GitHub

来自分类Dev

iOS:无法将UISplitViewController推送到UINavigationController

来自分类Dev

无法将更改推送到git

来自分类Dev

无法将提交推送到GitHub

来自分类Dev

无法将IonicApp / www推送到GitHub

来自分类Dev

无法将Docker映像推送到gcloud

来自分类Dev

无法将数据推送到Firebase onclick

来自分类Dev

无法将提交推送到远程GitHub

来自分类Dev

无法将提交推送到分支

来自分类Dev

将多种方法的结果推送到数组中的干净方法

来自分类Dev

如何将外部请求的结果推送到 firebase 中的 realtimeDB?

来自分类Dev

为什么我的方法没有将结果推送到数组中?

来自分类Dev

无法在 JavaScript 中推送到数组

来自分类Dev

将数据推送到json对象中

来自分类Dev

将JSON数据推送到数组中?

来自分类Dev

JavaScript:递归之间需要共享数组,以将结果推送到

来自分类Dev

胖箭头将结果推送到新功能

来自分类Dev

尝试将API结果推送到数组,但返回为空

来自分类Dev

(覆盖?)将搜索结果推送到数组的问题

来自分类Dev

无法将文件夹推送到Bitbucket中的远程存储库

来自分类Dev

Gitolite无法将更改推送到我进行的回购中

来自分类Dev

无法使用Artifactory插件将Docker Image推送到Jenkins管道中的Artifactory

来自分类Dev

使用upsert时无法将新数据推送到数组中

Related 相关文章

热门标签

归档