2017-07-06 103 views
0

在下面的例子中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} } 

在此先感谢。

回答

0

要清楚这不是xpath。在groovy它被命名为gpath,这是一个groovy表达。

您可以使用Eval类从字符串评估常规表达式:

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) }