如何在Groovy中处理动态xpath?

时间:2017-07-06 16:55:23

标签: xpath groovy

在下面的示例中,xpath已在代码中给出。

String xml = Recall.getXml()
def telephoneNumbers = new XmlSlurper().parseText(xml)​​​​​​​​
def outputBuilder = new groovy.xml.StreamingMarkupBuilder()
String telephoneXml = outputBuilder.bind { mkp.yield telephoneNumbers.telephone }

想知道通过变量指定相同xpath的任何可能的解决方案。如下。

String telephoneXml = outputBuilder.bind { mkp.yield ${xpath} }

提前致谢。

1 个答案:

答案 0 :(得分:0)

要明确这不是xpath。在groovy中它被命名为gpath,这是一个时髦的表达。

您可以使用Eval类来评估字符串中的groovy表达式:

def xml = '''<root>
  <telephone>1234567899</telephone>
  <cell>1234567890</cell>
</root>'''
def telephoneNumbers=new XmlSlurper().parseText(xml)
def outputBuilder = new groovy.xml.StreamingMarkupBuilder()
def gpath = "xml.telephone"
String telephoneXml = outputBuilder.bind { mkp.yield Eval.me('xml',telephoneNumbers,gpath) }