2012-04-05 75 views
1

我有一個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]]] 

有人能幫我理解這裏發生了什麼,以及如何解決這個問題?

回答

0

您使用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