Groovy从xml读取值
问题描述:
我有一个Sample Code,我试图从xml文件读取数据并操作这些值。这工作完全正常,当我试图在http://ideone.comGroovy从xml读取值
在我实际的代码我打电话这样的事情
def xmlFile = "path/to/xmlfile.xml"
def tcproj = new XmlParser().parseText(getTemplate(xmlFile).toString())
但是当我使用的示例代码中指定的相同if
条件在我的实际代码,我得到了完全不同的结果。
在试图调试时,我发现结果差异很大。我与这个实际代码的结果,当我试图做
println records.supported_versions.version.any { println it; it.toString().matches(/$ver/) }
是这样
version[attributes={}; value=[6.0.35.A]]
version[attributes={}; value=[7.0.25.B]]
false
当我做
println records.supported_versions.version.toString()
我得到的结果
[version[attributes={}; value=[6.0.35.A]], version[attributes={}; value=[7.0.25.B]]]
有人能帮我理解这里发生了什么,以及如何解决这个问题?
答
您使用XmlParser
,而不是作为XmlSlurper
在该例子......
要使用XmlParser的,你需要将代码更改为:
class xmlWorker {
static def tcproj = '''<tcs>
<supported_versions>
<version>6.0.35.A</version>
<version>7.0.25.B</version>
</supported_versions>
</tcs>'''
}
def records = new XmlParser().parseText(xmlWorker.tcproj)
def ver = "6.0.35.A"
println "Version: " + ver
println records.supported_versions.version.any {
println it.text()
it.text().matches(/${ver}/)
}
if(records.supported_versions.version.any { it.text().matches(/${ver}/) }) {
println "if"
} else {
println "else"
}
谢谢。我想这回答我的问题。它不能解决我的问题:( 我正在努力找出如何处理'if'条件。 – latestVersion 2012-04-05 12:32:07
@latestVersion你解释了问题的问题吗?我看不到它:-(什么是真正的问题吗? – 2012-04-05 12:34:04
@latestVersion你可以在你的问题的底部添加一点,以清楚你的意思是_“...我正在努力寻找如何处理if条件。”_ – 2012-04-05 12:35:49