在 Groovy 中将字符串 XML 片段转换为文档节点
Posted
技术标签:
【中文标题】在 Groovy 中将字符串 XML 片段转换为文档节点【英文标题】:Convert String XML fragment to Document Node in Groovy 【发布时间】:2012-06-20 08:21:37 【问题描述】:我正在尝试通过 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】:鉴于您当前拥有的 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>
(我自己添加了换行符以使其更易于阅读...您得到的实际字符串都在一行上)
【讨论】:
以上是关于在 Groovy 中将字符串 XML 片段转换为文档节点的主要内容,如果未能解决你的问题,请参考以下文章