xml - groovy打印xml中元素的路径和值

标签 xml groovy xmlslurper gpath

我有以下 xml:

<list>         
<cars>   
<model>2012</model>
<make>GM</make>         
</cars>    
</list>

我想将这些值打印为路径:值,如下所示。

list/cars/model : 2012
list/cars/make : GM

我怎样才能实现这个目标?我尝试了 name() 方法,但它只打印子项的名称。我想打印直到元素的整个路径。

我只能使用 xmlSlurper 解析器来执行此操作。

谢谢。

最佳答案

import groovy.util.XmlSlurper
import groovy.util.slurpersupport.NodeChild;
def rootNode = new XmlSlurper().parseText('<root><one a1="uno!"/><two>Some text!</two></root>' )

def printMap 
printMap = {node, path->
     if(node.getClass() == NodeChild){
        node.childNodes().each{
           printMap(it, (path ? path + "/" : "") + node.name())
        }
     } else {
        println "${path}/${node.name()}:${node.text()}"
     }
 }
 printMap(rootNode, "")

关于xml - groovy打印xml中元素的路径和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711262/

相关文章:

email - Jenkins EMail-ext 插件在电子邮件正文中发送 groovy 代码

Jenkins:在声明式管道中使用 XmlSlurper

xml - 使用 Powershell 添加和删除 Xmlnode

Groovy:可以构建函数映射吗?

java - 搜索列表中的元素

xml - 如何在使用 XmlSlurper 解析 xml 时读取带连字符的属性名称(例如 model_name)

java - 使用 JUST Java 1.5(或更早版本)读写 XML

c# - 将 XML 元素读取到 ListView - 我如何将两个变量传递给方法

java - 验证 "Invalid byte 1 of 1-byte UTF-8 sequence."中的 XML 文档结果