如何通过xpath在Groovy中获取属性

时间:2014-12-03 12:12:50

标签: xml groovy soapui

面对使用groovy脚本获取xml属性值的问题。

我有一个CDATA xml。我能够将XML解析到CDATA。但是,我无法为节点中存在的属性编写XPATH。请在下面找到示例。

  

NodeName = Item,attribute = ItemID

<Item ItemID="XXX-XXXXX"/>

e.g。

<Item ItemID="abc-defg"/>

groovy脚本:

import com.eviware.soapui.support.XmlHolder
respXmlHolder = new XmlHolder(messageExchange.getResponseContentAsXml())
respXmlHolder.declareNamespace("ns1","http://example.com/types")
CDATAXml = respXmlHolder.getNodeValue("//ns1:Response[1]/result[1]")
log.info(CDATAXml)
CDATAXmlHolder = new XmlHolder(CDATAXml)
Item = CDATAXmlHolder.getNodeValue("//ItemID")
log.info("Item = $Item")
assert '397-0109'== Item.@ItemID.text()

有人可以帮助我使用SOAPUI中的groovy脚本获取ItemID属性的值。

1 个答案:

答案 0 :(得分:0)

我试过这种方式。有效。谢谢。

import groovy.xml.MarkupBuilder
import groovy.lang.*
import java.util.*
import com.eviware.soapui.support.UISupport

def xmlStr = """<OrderLines>
<OrderLine>
<Item ItemId='397-0109'/>
<Item ItemId='125-5449'/>
<Item ItemId='523-7449'/>
</OrderLine>
</OrderLines>"""

def xmlParse = new XmlParser().parseText( xmlStr )
def ItemId = [:]
println "Write out the Attributes for each node"
xmlParse.OrderLine.Item.each {
ItemId = it.attributes()
log.info(ItemId)
}