【问题标题】:Convert String XML fragment to Document Node in Groovy在 Groovy 中将字符串 XML 片段转换为文档节点
【发布时间】: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 节点。

【问题讨论】:

    标签: groovy soapui xmlnode


    【解决方案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>
    

    (我自己添加了换行符以使其更易于阅读...您得到的实际字符串都在一行上)

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 2011-08-28
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多