是否可以从GRAILS转换器写入CDATA?我需要为GRAILS应用程序中的某些XML元素编写CDATA。在调试器中运行grails代码后,看起来XMLStreamWriter无法访问。有什么建议吗?
答案 0 :(得分:0)
没有可能通过xml转换器添加cdata。你可以使用StreamingMarkupBuilder: Generate CDATA inside of tag using StreamingMarkupBuilder
或者,有一个很好的丑陋,复制' .chars'在代码中使用groovy转换器定义的方法,编写未转义的字符:
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()