是否可以从GRAILS转换器编写CDATA?我需要在GRAILS应用程序中为某些XML元素编写CDATA。在调试器中运行grails代码后,看起来XMLStreamWriter无法访问。有什么建议吗?

最佳答案

无法通过xml转换器添加cdata。您可以使用StreamingMarkupBuilder:
Generate CDATA inside of tag using StreamingMarkupBuilder

或者,有一个不错的uglyhack,直接在您的代码中从groovy转换器定义中复制'.chars'方法,编写未转义的chars:

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 - Grails XML转换器-编写CDATA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33215126/

10-15 14:41