XStream で、CDATAセクションを出力するには、XStream のコンストラクタに、HierarchicalStreamDriver 実装の
Driver を指定し、指定する Driver が、createWriter で返す Writer が、直接テキストを判定して書かせるしか
ないみたい。
try(OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("out.xml"), "UTF-8")){ writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); XStream xstream = new XStream(new XppDriver(){ public HierarchicalStreamWriter createWriter(Writer out){ return new PrettyPrintWriter(writer){ protected void writeText(QuickWriter w, String text){ if (text.indexOf("<") >= 0 || text.indexOf(">") >= 0 || text.indexOf("&") >= 0 || text.indexOf("!") >= 0 || text.indexOf("'") >= 0 || text.indexOf("\"") >= 0 ){ w.write("<![CDATA["); w.write(text); w.write("]]>"); }else{ w.write(text); } } }; } }); // xstream toXML を実行する }catch(Exception e){ e.printStackTrace(); }finally{ }
ダサい。
読込みは特に何もしなくて良い。