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。 展开
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。 展开
1个回答
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("-_", "_"))) {当中一个)移到后面的函数的结束;}之中。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询