public static void main(String[] args) {
XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
boolean cdata = false;
@Override
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
cdata = (name.equals("converter") || name
.equals("name"));
}
@Override
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
// XppDriver xppDriver = new XppDriver(new XmlFriendlyReplacer(”__”, “_”)) {
// public HierarchicalStreamWriter createWriter(Writer out){
// return new PrettyPrintWriter(out,super.xmlFriendlyReplacer()) {
// protected void writeText(QuickWriter writer,String text) {
// writer.write(”<![CDATA[");
// writer.write(text);
// writer.write("]]>”);
// }
// };
// }
// };
// XStream xStream = new XStream(xppDriver);
xstream.registerConverter(new PersonConverter());
xstream.alias("converter", Person.class);
System.out.println(xstream.toXML(new Person("zzz","123","ssdsd")));
package converter;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class PersonConverter implements Converter {
public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
}
/**
**Marshal方法是用来将对象转换为XML的,他有三个参数:
1,我们准备转换的对象
2,我们准备输出对象的writer
3,当前的marshaling context
*/
@Override
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context) {
Person person = (Person) value;
//创建一个叫做fullname的节点,并将person的名字传给他
//可以任意次数的调用start/end node方法,但需要记住,你必须在打开一个节点之后记住关闭它。
//一般来说,执行转换的操作在setValue方法调用时发生
writer.startNode("fullname");
writer.setValue(person.getName());
writer.endNode();
writer.startNode("age");
writer.setValue(person.getAge());
writer.endNode();
}
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Person person = new Person();
//使用moveDown和moveUp方法在节点树层次中移动,所以,这里我们只需要简单的moveDown,得到值,再moveUp
reader.moveDown();
person.setName(reader.getValue());
reader.moveUp();
return person;
}
}
输出结果:
<converter>
<fullname><![CDATA[zzz]]></fullname>
<age><![CDATA[123]]></age>
</converter>
分享到:
相关推荐
xstream详细用法,包括xml转换为bean及bean转换为xml
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...
赠送jar包:xstream-1.4.11.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...
XStream组件进行Object与XML互转用法 1.所需求jar包: xstream-1.3.1.jar 2.如果仅进行OBJECT与XML之间互转只需要这一个jar 包及XStream这一个类就可又了 用法说明: 1.OBJECT 转XML //第一步:准备好要进行XML...
Xstream上次对CVE-2020-26217处理并不彻底,虽然通过黑名单方法阻止了远程代码执行,但是仍然可以采用类似思路实现文件删除与服务器请求伪造。 影响版本 Xstream 修复版本 Xstream > = 1.4.15 风险等级 严重
xstream最新版jar包
赠送jar包:xstream-1.4.7.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
xstream-1.4.19.jar
xstream jar包,java对象转xml以及xml转java对象,操作很简单。
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar
XStream DOC
XStream解析XML实例
XStream使用方法总结L-对象-转换.txt
xstream-1.4.7.jar XML
xstream xstream-1.4.5.jar
xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html
xstream-1.4.2