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" 
} 
+0

谢谢。我想这回答我的问题。它不能解决我的问题:( 我正在努力找出如何处理'if'条件。 – latestVersion 2012-04-05 12:32:07

+0

@latestVersion你解释了问题的问题吗?我看不到它:-(什么是真正的问题吗? – 2012-04-05 12:34:04

+0

@latestVersion你可以在你的问题的底部添加一点,以清楚你的意思是_“...我正在努力寻找如何处理if条件。”_ – 2012-04-05 12:35:49