将String XML片段转换为Groovy中的Document Node

时间:2012-06-20 08:21:37

标签: groovy soapui xmlnode

我正在尝试通过SOAPUI Groovy向请求添加新节点 我有String XMl片段,但我无法使用Groovy for SOAPUI创建节点。

例如

<entityProps>
  <candidate> <id>1</id><key></key> </candidate>
  <candidate> <id>2</id><key></key> </candidate>
  <candidate> <id>3</id><key></key> </candidate>
  <candidate> <id>4</id><key></key> </candidate>
</entityProps>

我想在此请求中添加新的<candidate></candidate>个节点。 我已经有了字符串,但我需要将其转换为Document节点。

1 个答案:

答案 0 :(得分:2)

鉴于您目前拥有的xml:

String doc = '''<entityProps>
               |  <candidate> <id>1</id><key></key> </candidate>
               |  <candidate> <id>2</id><key></key> </candidate>
               |  <candidate> <id>3</id><key></key> </candidate>
               |  <candidate> <id>4</id><key></key> </candidate>
               |</entityProps>'''.stripMargin()

片段字符串:

String frag = '<candidate> <id>5</id><key></key> </candidate>'

您可以解析文档:

def xml = new XmlSlurper().parseText( doc )

片段:

def fragxml = new XmlSlurper().parseText( frag )

然后,将片段附加到文档的根节点:

xml.appendNode( fragxml )

然后将此文档传回一个字符串:

String newDoc = new groovy.xml.StreamingMarkupBuilder().bind { mkp.yield xml }
println newDoc

打印:

<entityProps>
  <candidate><id>1</id><key></key></candidate>
  <candidate><id>2</id><key></key></candidate>
  <candidate><id>3</id><key></key></candidate>
  <candidate><id>4</id><key></key></candidate>
  <candidate><id>5</id><key></key></candidate>
</entityProps>

(我自己添加了新行,以便更容易阅读...你得到的实际字符串都在一行上)