XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个 10

使用XStream将java对象转换为xml时,需要对其中的一个字段加上CDATA,于是我自定义了一个XStream,主要代码如下:publicstaticXStream... 使用XStream将java对象转换为xml时,需要对其中的一个字段加上CDATA,于是我自定义了一个XStream,主要代码如下:
public static XStream createXstream() {
return new XStream(new XppDriver(new XmlFriendlyReplacer("-_", "_"))) {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
boolean cdata = false;

@Override
public void startNode(String name, @SuppressWarnings("rawtypes") Class clazz) {
super.startNode(name, clazz);
//对于用XStreamCDATA标记的theme字段,需要加上CDATA标签
if (name.equals("theme")) {
cdata = needCDATA(clazz, name);
}
}

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

通过这种方式创建XStream,XStream xstream = new XStream(new XppDriver(new XmlFriendlyReplacer("_-", "_")));
然后都调用xstream.toXML,自定义的user_name变成了user__name(多一个下划线),而后者是正常的,但是没有添加CDATA标签,怎么既能添加CDATA,且user_name下划线正常呢?

在网上找的一些资料:http://www.iteye.com/problems/94338,启东时报AnnotationXStreamMarshaller找不到,可能是少jar包导致的,但又找不到相关jar。
展开
 我来答
匿名用户
2015-10-21
展开全部
warning: [deprecation] XppDriver(com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer) in com.thoughtworks.xstream.io.xml.XppDriver has been deprecated

已经过时的方法,所以,不会调用此方法。
追问
我用的XStream 1.3.1版本,1.4版本之后,那个方法才过时。
追答
括号)写错位置了,应该将return new XStream(new XppDriver(new XmlFriendlyReplacer("-_", "_"))) {当中一个)移到后面的函数的结束;}之中。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式