2015-10-19 78 views
1

是否可以从GRAILS转换器写入CDATA?在GRAILS应用程序中,我需要为CDATA编写一些XML元素。在调试器中运行grails代码之后,它看起来像XMLStreamWriter不可访问。任何建议?Grails XML转换器 - 写入CDATA

回答

0

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

,或者有一个很好的uglyhack,复制” .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()