首页 > 其他 > 详细

关于XStream双下划线问题的处理

时间:2015-11-04 17:56:05      阅读:602      评论:0      收藏:0      [点我收藏+]

经过多次调试,终于得到了有效的结果,方法如下:

public class XStreamFactory {
    public static XStream getXStream() {
        final NameCoder nameCoder = new NoNameCoder();
        XStream xStream = new XStream(new XppDomDriver(nameCoder) {
            @Override
            public HierarchicalStreamWriter createWriter(Writer out) {
		//输出格式化的xml字符串
		//return new PrettyPrintWriter(out, nameCoder) {
		//输出压缩的xml字符串,删除多余的空白符
                return new CompactWriter(out, nameCoder) {
                    boolean cdata = false;

                    @Override
                    public void startNode(String name, Class clazz) {
                        super.startNode(name, clazz);
                        // 所有的字符串都加上CDATA标识
                        cdata = "String".equals(clazz.getSimpleName());
                    }

                    @Override
                    protected void writeText(QuickWriter writer, String text) {
                        if (cdata) {
                            writer.write("<![CDATA[");
                            writer.write(text);
                            writer.write("]]>");
                        } else {
                            writer.write(text);
                        }
                    }
                };
            }
        });
        return xStream;
    }
}

使用方法如下:

XStream xStream = XStreamFactory.getStream();

// xml to java object
xStream.ignoreUnknownElements();
xStream.alias("xml", Class<待转换的java object>);
xStream.fromXML("<xml><tag>aaa</tag></xml>");

// java object to xml
xStream.toXML(java object);



关于XStream双下划线问题的处理

原文:http://my.oschina.net/02471/blog/525885

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!