有没有办法让XmlSlurper通过变量获得任意元素?例如,我可以做一些像输入文件:
<file>
<record name="some record" />
<record name="some other record" />
</file>
def xml = new XmlSlurper().parse(inputFile)
String foo = "record"
return xml.{foo}.size()
Run Code Online (Sandbox Code Playgroud)
我试过使用{}和$ {}和()如何转义这样的变量?或者没有办法?是否可以使用闭包的结果作为参数?所以我可以做点什么
String foo = file.record
int numRecords = xml.{foo.find(/.\w+$/)}
Run Code Online (Sandbox Code Playgroud) 代码如下:
class Book
{
private String title
Book (String theTitle)
{
title=theTitle
}
String getTitle()
{
return title
}
}
Book gina=new Book('Groovy in Action')
assert gina.getTitle()=='Groovy in Action'
assert getTitleBackwards(gina)=='noitcA ni yvoorG'
String getTitleBackwards(Book)
{
title=book.getTitle()
return title.reverse()
}
Run Code Online (Sandbox Code Playgroud)
当我使用Ctrl + R执行时,我得到以下编译错误.
1编译错误:
类Book的重复类定义无效:源Book.groovy包含至少两个类Book的定义.其中一个类是使用class语句的显式生成类,另一个是基于文件名从脚本体生成的类.解决方案是更改文件名或更改类名.at line:1,column:1
有人可以解释一下这里发生了什么.