2017-07-06 102 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) }