Grails XML转换器-编写CDATA [英] Grails XML converters - write CDATA
问题描述
是否可以从GRAILS转换器写入CDATA?我需要在GRAILS应用程序中为某些XML元素编写CDATA.在调试器中运行grails代码后,看起来XMLStreamWriter无法访问.有什么建议吗?
Is writing CDATA from GRAILS converters possible? I have a requirement of writing CDATA for some XML elements in a GRAILS app. After running through the grails code in debugger, it looks like the XMLStreamWriter is not accessible. Any recommendations?
推荐答案
无法通过xml转换器添加cdata.您可以使用StreamingMarkupBuilder: 使用StreamingMarkupBuilder在标签内部生成CDATA
there's no possibility to add cdata via xml converters. you can use StreamingMarkupBuilder: Generate CDATA inside of tag using StreamingMarkupBuilder
或者,有个不错的uglyhack,直接从代码中的groovy转换器定义中复制'.chars'方法,编写未转义的chars:
or, have a nice uglyhack, copying '.chars' method from groovy converter definition right in your code, writing chars unescaped:
converter.startNode('property')
converter.attribute('name', propertyName)
converter.startNode('value')
//converter.chars("<![CDATA[" + propertyValue + "]]>")
//as chars in xml converter go escaped, had to rewrite the method here:
converter.checkState();
try {
if (converter.writer.mode == TAG) {
converter.writer.endStartTag();
}
converter.writer.mode = CONTENT;
//we put the data unescaped:
converter.writer.writer.unescaped().write("<![CDATA[" + propertyValue + "]]>");
}
catch (Exception e) {
throw ConverterUtil.resolveConverterException(e);
}
//-----------------
converter.end()
converter.end()
这篇关于Grails XML转换器-编写CDATA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!