Groovy GPATH query-返回比较子节点的父节点
我是新来的。我正在寻找其标记id属性与“4”匹配的所有视频游戏节点Groovy GPATH query-返回比较子节点的父节点,groovy,gpath,Groovy,Gpath,我是新来的。我正在寻找其标记id属性与“4”匹配的所有视频游戏节点 def text='' 3. 测试名称3 2001-03-10T00:00:00Z 41 31 3. 测试名称3 2001-03-10T00:00:00Z 41 31 ''' def videoGames=new XmlSlurper().parseText(文本) def games=视频游戏。视频游戏。“**”。查找{ node->node.name() } println游戏 我可以打印子节点,但尚未成功获取父节点。有指
def text=''
3.
测试名称3
2001-03-10T00:00:00Z
41
31
3.
测试名称3
2001-03-10T00:00:00Z
41
31
'''
def videoGames=new XmlSlurper().parseText(文本)
def games=视频游戏。视频游戏。“**”。查找{
node->node.name()
}
println游戏
我可以打印子节点,但尚未成功获取父节点。有指针吗?以下代码:
import groovy.xml.*
def text = '''
<videoGames>
<videoGame category="A">
<id>3</id>
<name>testName 3</name>
<releaseDate>2001-03-10T00:00:00Z</releaseDate>
<tags attr="true">
<tag id="4">41</tag>
<tag id="3">31</tag>
</tags>
</videoGame>
<videoGame category="B">
<id>3</id>
<name>testName 3</name>
<releaseDate>2001-03-10T00:00:00Z</releaseDate>
<tags attr="true">
<tag id="3">41</tag>
<tag id="7">31</tag>
</tags>
</videoGame>
</videoGames>
'''
def videoGames = new XmlSlurper().parseText(text)
def games = videoGames.videoGame.findAll { g ->
g.tags.tag.any { tag ->
tag.@id == '4'
}
}
def xmlString = XmlUtil.serialize(games)
println(xmlString)
导入groovy.xml*
定义文本=“”
3.
测试名称3
2001-03-10T00:00:00Z
41
31
3.
测试名称3
2001-03-10T00:00:00Z
41
31
'''
def videoGames=new XmlSlurper().parseText(文本)
def games=videoGames.videoGames.findAll{g->
g、 tags.tag.any{tag->
标记。@id='4'
}
}
def xmlString=XmlUtil.serialize(游戏)
println(xmlString)
运行时将产生以下输出:
─➤ groovy solution.groovy
<?xml version="1.0" encoding="UTF-8"?>
<videoGame category="A">
<id>3</id>
<name>testName 3</name>
<releaseDate>2001-03-10T00:00:00Z</releaseDate>
<tags attr="true">
<tag id="4">41</tag>
<tag id="3">31</tag>
</tags>
</videoGame>
─➤ groovy解决方案
3.
测试名称3
2001-03-10T00:00:00Z
41
31
(我添加的输出中xml声明后的换行符)
─➤ groovy solution.groovy
<?xml version="1.0" encoding="UTF-8"?>
<videoGame category="A">
<id>3</id>
<name>testName 3</name>
<releaseDate>2001-03-10T00:00:00Z</releaseDate>
<tags attr="true">
<tag id="4">41</tag>
<tag id="3">31</tag>
</tags>
</videoGame>