2012-04-05 18 views
1

Sample Code私はxmlファイルからデータを読み取り、その値を操作しようとしています。これは、完全に罰金働いていた私は、私の実際のコードではhttp://ideone.comXMLからGroovyの値を読み取る

でそれをしようとしたとき、私は私の実際のコードのサンプルコードで指定されたものと同じif条件を使用する場合、私はこの

def xmlFile = "path/to/xmlfile.xml" 
def tcproj = new XmlParser().parseText(getTemplate(xmlFile).toString()) 

のようなものを呼び出すしかし、よ私は全く異なる結果になる。

デバッグしようとすると、結果が大きく異なることがわかりました。私は

println records.supported_versions.version.any { println it; it.toString().matches(/$ver/) }

を実行しようとしましたこれで私の実際のコードの結果は、私が

println records.supported_versions.version.toString() 

を行うと、私は結果

[version[attributes={}; value=[6.0.35.A]], version[attributes={}; value=[7.0.25.B]]] 
を取得し、この

version[attributes={}; value=[6.0.35.A]] 
version[attributes={}; value=[7.0.25.B]] 
false 

誰かが私にここで何が起こっているのか、これを解決する方法を理解する助けになることができますか?

答えて

0

あなたはXMLPARSERを使用するには...

XmlParser代わりの例のようにXmlSlurperを使用している、あなたにコードを変更する必要があります。

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

+0

@latestVersionあなたは問題の問題について説明しましたか?実際の問題だったのですか? –

+0

@latestVersionあなたの質問の末尾にビットを追加して、あなたが意味するものを_ "... if条件でどうやって行くのか苦労しています" _ –

関連する問題