Grails XML转换器-编写CDATA [英] Grails XML converters - write CDATA

查看:88
本文介绍了Grails XML转换器-编写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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆