1

我有一个示例代码,我试图从 xml 文件中读取数据并操作这些值。当我在http://ideone.com上尝试时,这工作得很好

在我的实际代码中,我正在调用这样的东西

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]]]

有人可以帮助我了解这里发生了什么以及如何解决这个问题吗?

4

1 回答 1

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"
}
于 2012-04-05T12:22:52.813 回答