`
qq123zhz
  • 浏览: 524438 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

xstream 的高级用法,自定义输出结构

    博客分类:
  • java
 
阅读更多

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用法总结

    xstream详细用法,包括xml转换为bean及bean转换为xml

    XStream XML与Json转换

    XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...

    xstream-1.4.11-API文档-中文版.zip

    赠送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 最齐全的xstream1.4.8.jar ...

    XStream组件进行Object与XML互转用法

    XStream组件进行Object与XML互转用法 1.所需求jar包: xstream-1.3.1.jar 2.如果仅进行OBJECT与XML之间互转只需要这一个jar 包及XStream这一个类就可又了 用法说明: 1.OBJECT 转XML //第一步:准备好要进行XML...

    xstream-1.4.15.jar

    Xstream上次对CVE-2020-26217处理并不彻底,虽然通过黑名单方法阻止了远程代码执行,但是仍然可以采用类似思路实现文件删除与服务器请求伪造。 影响版本 Xstream 修复版本 Xstream &gt; = 1.4.15 风险等级 严重

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    xstream-1.4.7-API文档-中文版.zip

    赠送jar包:xstream-1.4.7.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    xstream-1.4.19.jar

    xstream-1.4.19.jar

    xstream-1.4.jar

    xstream jar包,java对象转xml以及xml转java对象,操作很简单。

    xstream-1.4.7-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    xstream1.22.jar

    xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar

    XStream DOC

    XStream DOC

    XStream解析XML实例

    XStream解析XML实例

    XStream使用方法总结-对象-转换.txt

    XStream使用方法总结L-对象-转换.txt

    xstream-1.4.7.jar

    xstream-1.4.7.jar XML

    xstream-1.4.5.jar

    xstream xstream-1.4.5.jar

    xstream-1.4.2.jar

    xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html

    xstream-1.4.2

    xstream-1.4.2

Global site tag (gtag.js) - Google Analytics