base 64使用Groovy脚本解码XML值

base 64使用Groovy脚本解码XML值,groovy,base64,Groovy,Base64,我将在一个变量中接收以下XML数据 <order> <name>xyz</name> <city>abc</city> <string>aGVsbG8gd29ybGQgMQ==</string> <string>aGVsbG8gd29ybGQgMg==</string> <string>aGVsbG8gd29ybGQgMw==</string

我将在一个变量中接收以下XML数据

<order>
   <name>xyz</name>
   <city>abc</city>
   <string>aGVsbG8gd29ybGQgMQ==</string>
   <string>aGVsbG8gd29ybGQgMg==</string>
   <string>aGVsbG8gd29ybGQgMw==</string>
 </order>

xyz
abc
aGVsbG8gd29ybGQgMQ==
aGVsbG8gd29ybGQgMg==
aGVsbG8gd29ybGQgMw==
输出:

 <order>
       <name>xyz</name>
        <city>abc</city>
       <string>hello world 1</string>
       <string>hello world 2</string>
       <string>hello world 3</string>
 </order>

xyz
abc
你好,世界1
你好,世界2
你好,世界3
我知道如何从base64解码,但问题是有些值已经解码,有些已经编码。使用groovy对这些数据进行解码以便获得如图所示的输出的最佳方法是什么


始终:标记值将被编码。rest所有其他标记和值都将被解码。

由于不确定哪些节点可以编码,哪些节点不可以,因此无需检测base64编码,因此实现方法非常简单:

  • 解析它。在Groovy中有两种更好的方法来实现这一点:XmlSlurper和XmlParser。它们在计算和内存消耗模式上有所不同,但最终都提供了对象/结构表示
  • 使用该对象结构:遍历所有必需的元素,解码需要解码的内容/属性
  • 或者继续使用这些数据和/或将其序列化回XML文本
  • 要查看的文章:

    还有很多很多

    另一个备忘单对Groovy noobs总是很有用:


    例如,查看如何遍历那里的结构。

    你知道哪些标签的内容将始终被编码,哪些不被编码吗?@YuriG-yes。始终:标记值将被编码。我可以有多个标签。可能至少有60000个标签需要编码。不会对其他标签进行编码。那么我看不出你的问题是什么?只需遍历XML,获取所有元素,解码它们,然后将它们放回原处。如果需要,将其转换回字符串。对了,对不起,groovy是新来的。你有我能看到的例子吗@这可能是感谢的副本。我会浏览你的链接。我被困在另一个项目中,所以还没有机会调查。