首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含变量的Groovy GPath

包含变量的Groovy GPath
EN

Stack Overflow用户
提问于 2016-05-21 04:26:13
回答 1查看 403关注 0票数 1

使用下面的XML代码:

def soapResponse =“

代码语言:javascript
复制
<Results>
   <ResultSet fetchSize="10">
      <Row rowNumber="1">
         <ID_ORDER>144107</ID_ORDER>
         <CH_LNAME>TESTING</CH_LNAME>
         <CH_FNAME>QA</CH_FNAME>
      </Row>
      <Row rowNumber="2">
         <ID_ORDER>144108</ID_ORDER>
         <CH_LNAME>TESTING</CH_LNAME>
         <CH_FNAME>QA</CH_FNAME>
      </Row>
   </ResultSet>
</Results>

def inputXML =新XmlParser().parseText(soapResponse)

我想使用GPath来获取第一行(行rowNumber="1")下的ID_ORDER的值。

这是可行的,下面的变量填充了144107:

代码语言:javascript
复制
def id_order = inputXML.ResultSet.Row[0].ID_ORDER

但是,我需要能够从excel表构建GPath。但当我用ResultSet/Row/ID_ORDER填充Excel单元格并将上一行作为变量执行时:

代码语言:javascript
复制
def excelVariable = //getting "ResultSet/Row[0]/ID_ORDER" from sheet
def excelVariableArray = excelVariable.split('/')  //create array of it, separated by "/"
def id_order = inputXML."${excelVariableArray[0]}"."${excelVariableArray[1]}"."${excelVariableArray[2]}".text()  //traverse through XML, get value of "ID_ORDER" under 1st "Row"element

这里没有填充id_order。预计会有144107人加入。如果我从行中取出索引"“,那么它就成功地从ID_ORDER中获取了所有XML值。但由于我只想要第一个,所以我使用了索引0,但它不起作用- value结果为空。

希望有人能对此提出解决方案。

EN

回答 1

Stack Overflow用户

发布于 2016-05-21 10:08:08

一种方法是使用适当的绑定在新的GroovyShell中执行excelVariable表达式:

代码语言:javascript
复制
def inputXMLStr = """
<Results>
   <ResultSet fetchSize="10">
      <Row rowNumber="1">
         <ID_ORDER>144107</ID_ORDER>
         <CH_LNAME>TESTING</CH_LNAME>
         <CH_FNAME>QA</CH_FNAME>
      </Row>
      <Row rowNumber="2">
         <ID_ORDER>144108</ID_ORDER>
         <CH_LNAME>TESTING</CH_LNAME>
         <CH_FNAME>QA</CH_FNAME>
      </Row>
   </ResultSet>
</Results>
"""

def inputXML = new XmlSlurper().parseText(inputXMLStr)

def map = [:]
map["inputXML"] = inputXML
def binding = new Binding(map)
def shell = new GroovyShell(binding)

def excelVariable = "inputXML.ResultSet.Row[0].ID_ORDER" 
def result = shell.evaluate(excelVariable)
assert result == inputXML.ResultSet.Row[0].ID_ORDER
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37355300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档