如何将CDATA内容添加到Groovy中的现有XML

时间:2017-05-15 14:35:10

标签: xml groovy

我试图谷歌它,但我想我是第一个关于这个问题的人;)我发现StreamingMarkupBuilder但这主要用于创建一个我不需要的新XML。而且我无法弄清楚如何添加而不是创建。

所以我有我漂亮的XML:

<root>
  <ducks>
    <rubberduck />
  </ducks>
</root>

我想要的只是为我的rubberducky添加CDATA

<root>
  <ducks>
    <rubberduck><![CDATA[Best Duck Ever!]]></rubberduck>
  </ducks>
</root>

首先我使用了XmlSlurperreplaceBody但这会占用CDATA - 标记。

那我怎么能简单地在Groovy中添加一个CDATA,这在我的webservice请求中是必需的?在Java中我会使用 ducksNode.appendChild(rootDoc.createCDATASection("...."))

我已经习惯了Groovy比Java更容易和更快。

2 个答案:

答案 0 :(得分:0)

基本上你至少可以用Groovy或者更少或更少的方式做你在Java中可以做的任何事情。

但为什么你需要把它作为CDATA部分呢?只需设置文本,Groovy就会转义需要自动转义的字符,这会使CDATA部分过时。

答案 1 :(得分:0)

groovy.xml.MarkupBuildermkp.yieldUnescaped

一起使用
import groovy.xml.*

def sw = new StringWriter()
def builder = new MarkupBuilder(sw)

builder.root {
    ducks {
        rubberduck {
            mkp.yieldUnescaped("<![CDATA[" + "Best Duck Ever!" + "]]>")
        }
    }
}

println sw.toString()