无法在groovy脚本中从xml中提取属性

时间:2016-05-11 17:10:11

标签: groovy automation

我正在尝试使用groovy脚本自动化。这是我的剧本。我无法提及namspace。

<ns2:contactPref xmlns="namespace 1" xmlns:ns2="name space 2">
  <ns2:Information>
    <value>Pass</value>
    </ns2:Information>
  <ns2:contactPreference>
    <ns2:contactPointRel>
      <contactPoint xs:type="Tele" xmlns:xs="namespace 3">
        <cat>mob</cat>
        <med>Int</med>
        </contactPoint>
      </ns2:contactPointRel>
      </ns2:contactPreference>
  </ns2:contactPref>

现在我想在contactPoint标签处获取属性 为此,我试过这样的

groovyUtils=new com.eviware.soapui.support.Groovyutills(context)
def xPath=XPathFactory.newInstance().newXPath()
def type=context.expand('${GetResponse#Response#//*:contactPoint/@xs:type}')
log.info type

尝试了这个

def type=context.expand('${GetResponse#Response#//*:contactPoint/@type}')

我也试过这个

def resp=groovyUtils.getXmlHolder("GetResponse#Response")
def type1=(String)xPath.evaluate('//:contactpoint/@xs:type',resp,xPathConstants.STRING)

但没有帮助。请有人告诉我该怎么做?

1 个答案:

答案 0 :(得分:0)

尝试使用它应该工作

  

@ {namespace 3} type

如果您在 contactPoint 中看到 xs:type =“Tele”xmlns:xs =“namespace 3”,则xs的值为命名空间3 和{type}是Tele

已编辑 - 您可以使用类似的内容 - 将xmlString作为XML

  

def xml = new XmlSlurper()。parseText(xmlString)
  的println   xml.contactPreference.contactPointRel.contactPoint。“@ {命名空间   3}输入“