使用 groovy MarkupBuilder 在 XML 中生成 CDATA
Generate CDATA in XML using groovy MarkupBuilder
我希望能够使用 Groovy 在我的 XML 中生成 CDATA 部分。我已经使用 MarkupBuilder 的 mkp 来做到这一点,但它不起作用。我循环浏览产品,然后生成以下片段作为 XML 的一部分。我得到的是以下内容:它在产品代码旁边打印未转义的文本,而不是在描述中打印,后者留空。
<product>
<name>banana</name>
<code>10002</code><name>ICON_1</name><!CDATA[This product is on
sale]]]>
<description/>
</product>
这是用于生成数据的部分。
product{
name (product.name)
code (product.code)
description mkp.yieldUnescaped("<!CDATA[${product.description}]]>")
}
这是我要打印的内容:
<product>
<name>banana</name>
<code>10002</code>
<description><![CDATA[This product is on sale]]></description>
</product>
您只需要在 CDATA
部分周围使用一些大括号来提示构建器将其放置在何处:
def out = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(out)
xml.product {
name ('banana')
code ('10002')
description { mkp.yieldUnescaped("<![CDATA[Example of text in a CDATA block]]>") }
}
System.out.println out.toString()
这会产生:
<product>
<name>banana</name>
<code>10002</code>
<description><![CDATA[Example of text in a CDATA block]]></description>
</product>
我希望能够使用 Groovy 在我的 XML 中生成 CDATA 部分。我已经使用 MarkupBuilder 的 mkp 来做到这一点,但它不起作用。我循环浏览产品,然后生成以下片段作为 XML 的一部分。我得到的是以下内容:它在产品代码旁边打印未转义的文本,而不是在描述中打印,后者留空。
<product>
<name>banana</name>
<code>10002</code><name>ICON_1</name><!CDATA[This product is on
sale]]]>
<description/>
</product>
这是用于生成数据的部分。
product{
name (product.name)
code (product.code)
description mkp.yieldUnescaped("<!CDATA[${product.description}]]>")
}
这是我要打印的内容:
<product>
<name>banana</name>
<code>10002</code>
<description><![CDATA[This product is on sale]]></description>
</product>
您只需要在 CDATA
部分周围使用一些大括号来提示构建器将其放置在何处:
def out = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(out)
xml.product {
name ('banana')
code ('10002')
description { mkp.yieldUnescaped("<![CDATA[Example of text in a CDATA block]]>") }
}
System.out.println out.toString()
这会产生:
<product>
<name>banana</name>
<code>10002</code>
<description><![CDATA[Example of text in a CDATA block]]></description>
</product>