Groovy 在SoapUI响应上使用XMLParser

Groovy 在SoapUI响应上使用XMLParser,groovy,xml-parsing,soapui,Groovy,Xml Parsing,Soapui,在SoapUI Pro中使用XmlParser时出现问题 您好,我正在尝试使用“xml解析器”在SoapUI Pro中验证我的xml响应 我一直在groovy脚本中处理这个问题,如果我像这样在groovy脚本中声明和分配xml,我就可以访问标记 如果我在脚本中声明xml,则此操作有效 def xml = """ <NS1:createShipmentResponse xmlns:NS1="http://www.royalmailgroup.com/api/ship/V1">

在SoapUI Pro中使用XmlParser时出现问题

您好,我正在尝试使用“xml解析器”在SoapUI Pro中验证我的xml响应

我一直在groovy脚本中处理这个问题,如果我像这样在groovy脚本中声明和分配xml,我就可以访问标记

如果我在脚本中声明xml,则此操作有效

def xml = """
<NS1:createShipmentResponse xmlns:NS1="http://www.royalmailgroup.com/api/ship/V1">
         <NS1:integrationHeader>
            <dateTime xmlns="http://www.royalmailgroup.com/integration  /core/V1">2013-12-24T22:20:34</dateTime>
            <version xmlns="http://www.royalmailgroup.com/integration/core/V1">1</version>
            <identification xmlns="http://www.royalmailgroup.com/integration/core/V1">
               <applicationId>111111113</applicationId>
               <transactionId>420642961</transactionId>
            </identification>
         </NS1:integrationHeader>
         <NS1:completedShipmentInfo>
            //xml not complete, other info in here.
         </NS1:completedShipmentInfo>
         <NS1:integrationFooter>
            <warnings xmlns="http://www.royalmailgroup.com/integration/core/V1">
               <warning>
                  <warningCode>W0022</warningCode>
                  <warningDescription>The customerReference specified is longer than   12 characters and has been truncated</warningDescription>
               </warning>
               <warning>
                  <warningCode>W0026</warningCode>
                  <warningDescription>The departmentReference specified is invalid and     will be ignored</warningDescription>
               </warning>
            </warnings>
         </NS1:integrationFooter>
      </NS1:createShipmentResponse>
"""

def parser = new XmlParser().parseText(xml)

parser.'NS1:integrationFooter'.warnings.warning.warningCode.each{ 
     log.info it.text()
}
我知道解析器变量已被分配xml响应,因为当我可以将其打印到日志中时

i、 e.log.info解析器打印

Wed Jan 08 16:33:38 GMT 2014:INFO:{http://schemas.xmlsoap.org/soap/envelope    /}Envelope[attributes={}; value=[{http://schemas.xmlsoap.org/soap/envelope/}Body[attributes={}; value=[{http://www.royalmailgroup.com/api/ship/V1}createShipmentResponse[attributes={}; value=[{http://www.royalmailgroup.com/api/ship/V1}integrationHeader[attributes={}; .......
但当我从soap响应实例化xmlParser请求时,下面的代码不会打印任何内容

parser.'NS1:integrationFooter'.warnings.warning.warningCode.each{ 
         log.info it.text()
}

任何帮助都将不胜感激。

我相信您的工作水平是错误的

语法分析器。主体


嗯。原来我不需要“NS1:”部分。下面的例子很有用

slurper.Body.createShipmentResponse.integrationFooter.warnings.warning.warningCode.each{ 
     log.info it.text()
}
应采取以下措施:

def response = context.expand( '${createShipment_v04#Response}' );
def parser = new XmlSlurper().parseText(response)


def warningCodes = parser.'**'.findAll {
    it.name()=='warningCode'
}

warningCodes.each {
  log.info it
}

你好谢谢你的回复。但我已经尝试过了,但似乎没有任何效果,例如parser.Body.'NS1:createShipmentResponse.'NS1:integrationFooter'。warning.warning.warningCode.each{。。。
def response = context.expand( '${createShipment_v04#Response}' );
def parser = new XmlSlurper().parseText(response)


def warningCodes = parser.'**'.findAll {
    it.name()=='warningCode'
}

warningCodes.each {
  log.info it
}