在 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>

我想在这个请求中添加新的&lt;candidate&gt;&lt;/candidate&gt; 节点。 我已经有了字符串,但我需要将其转换为 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 片段转换为文档节点的主要内容,如果未能解决你的问题,请参考以下文章

在 Groovy 中将字符串转换为 int

在 Groovy 中将整数转换为十六进制字符串

如何在groovy中将十六进制转换为字符?

如何在groovy中将java.lang.String转换为json

将字符串 XML 片段转换为 Java 中的文档节点

如何在java中将大型XML转换为字符串