- 浏览: 468450 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (146)
- Maven (3)
- Quartz (10)
- Hessian (3)
- JDK (42)
- eclipse (4)
- 设计思想 (6)
- XML (8)
- JavaMail (1)
- Spring (11)
- mina (1)
- HsqlDb (1)
- Cache (2)
- Tool (6)
- 心情 (5)
- JQuery (0)
- Hadoop (5)
- Hbase (3)
- 自动构建 (7)
- JNDI (0)
- 代码赏析 (5)
- Oracle (1)
- Excel (4)
- Effective Java (5)
- JAXB (4)
- fdafasdf (1)
- ccc (0)
- web (3)
- concurrent (1)
- CVS (1)
- eclipse plugin (2)
- Apache (10)
最新评论
-
chxiaowu:
nice!
Quartz实现固定执行次数 -
zxjlwt:
学习了。http://surenpi.com
自定义ClassLoader -
kadlly:
public static final Logger log ...
Hessian 权限认证 -
spring_springmvc:
java程序语言学习教程 地址http://www.zuida ...
Java-Final -
liushuiwuyan:
[img][/img]
设计模式-单例
1. 把对象进行字符串输出,把字符串作为对象读入
2. 把对象序列化到文件,和把文件反序列化为对象
文件内容如下
其实这种方式挺好,比如会员登陆可以生成其登陆的基本信息,需要获取的时候,从文件系统反序列化读取,与数据库类似,但是存储的内容比较少,适合一般的场景,不需要数据库时[当然如果使用这种方式来实现数据库的API也不错啊,有时间研究研究,写测试用例的时候就可以更清晰了]
3. 把json转化为对象,和把对象生成对应的json
4. 把对象转化为xml和把xml转化为对象
package org.frame.xstream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import org.frame.xstream.dataobject.blog.Entry; import com.thoughtworks.xstream.XStream; public class TestObjectOutputStream { public static void main(String[] args) throws IOException, ClassNotFoundException { XStream xstream = new XStream(); StringWriter someWriter = new StringWriter(); ObjectOutputStream out = xstream.createObjectOutputStream(someWriter); out.writeObject(new Entry("Joe", "Walnes")); out.writeObject(new Entry("Someone", "Else")); out.writeObject("hello"); out.writeInt(12345); out.close(); System.out.println(someWriter.toString()); StringReader someReader = new StringReader(someWriter.toString()); ObjectInputStream in = xstream.createObjectInputStream(someReader); Entry a = (Entry)in.readObject(); Entry b = (Entry)in.readObject(); String h = (String)in.readObject(); int aa = in.readInt(); System.out.println(a.title); System.out.println(a.description); System.out.println(b.title); System.out.println(b.description); System.out.println(h); System.out.println(aa); } }
2. 把对象序列化到文件,和把文件反序列化为对象
package org.frame.xstream; import java.util.Iterator; import java.util.List; import org.frame.xstream.dataobject.blog.Author; import java.io.File; import com.thoughtworks.xstream.persistence.FilePersistenceStrategy; import com.thoughtworks.xstream.persistence.PersistenceStrategy; import com.thoughtworks.xstream.persistence.XmlArrayList; public class TestPersistence { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //the E:/tmp must be exists PersistenceStrategy strategy = new FilePersistenceStrategy(new File("E:/tmp")); add(strategy); remove(strategy); } public static void add(PersistenceStrategy strategy ){ // creates the list: List list = new XmlArrayList(strategy); // adds four authors list.add(new Author("joe walnes")); list.add(new Author("joerg schaible")); list.add(new Author("mauro talevi")); list.add(new Author("guilherme silveira")); // adding an extra author Author mistake = new Author("mama"); list.add(mistake); //五个对象会生成五个文件 int@1.xml, int@2.xml, int@3.xml, int@4.xml, int@5.xml //原来xstream生成全名的原因是为了序列化和反序列化. } public static void remove(PersistenceStrategy strategy){ // looks up the list: List list = new XmlArrayList(strategy); // remember the list is still there! the files int@[1-5].xml are still in /tmp! // the list was persisted! for(Iterator it = list.iterator(); it.hasNext(); ) { Author author = (Author) it.next(); if(author.getName().equals("mama")) { System.out.println("Removing mama..."); it.remove(); } else { System.out.println("Keeping " + author.getName()); } } } }
文件内容如下
<org.frame.xstream.dataobject.blog.Author> <name>mauro talevi</name> </org.frame.xstream.dataobject.blog.Author>
其实这种方式挺好,比如会员登陆可以生成其登陆的基本信息,需要获取的时候,从文件系统反序列化读取,与数据库类似,但是存储的内容比较少,适合一般的场景,不需要数据库时[当然如果使用这种方式来实现数据库的API也不错啊,有时间研究研究,写测试用例的时候就可以更清晰了]
3. 把json转化为对象,和把对象生成对应的json
package org.frame.xstream; import java.io.Writer; import org.frame.xstream.dataobject.blog.Entry; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; import com.thoughtworks.xstream.io.json.JsonWriter; /** * 其实使用返回的 { susccess: "true", errorMessage: "你长得太丑了" } * * 可以使用对象形式,也可以建一个vm文件来维护返回的信息,推荐*.vm. 当然使用Action直接返回字符串,比拼凑的好玩点. * * @author yangchunlong.tw * */ public class TestWithJson { /** * @param args */ public static void main(String[] args) { XStream xstream = createByJettison(); jsonToObject(xstream); } public static void createJson(XStream xstream) { Entry product = new Entry("Banana", "123"); xstream.setMode(XStream.NO_REFERENCES); xstream.alias("product", Entry.class); System.out.println(xstream.toXML(product)); // 把xstream使用到json上也是相当给力的. // 这里都有一个对象名,还有一个不要根节点的 } public static void jsonToObject(XStream xstream) { String json = "{\"product\":{\"title\":\"Banana\",\"description\":123}}"; //XStream xstream = new XStream(new JettisonMappedXmlDriver()); xstream.alias("product", Entry.class); Entry product = (Entry) xstream.fromXML(json); System.out.println(product.title); System.out.println(product.description); } public static XStream createByJettison() { return new XStream(new JettisonMappedXmlDriver()); } public static XStream createByJDK() { // 不需要根节点,这个牛B了,不是接口也可以重写方法 return new XStream(new JsonHierarchicalStreamDriver() { public HierarchicalStreamWriter createWriter(Writer writer) { return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); } }); } }
4. 把对象转化为xml和把xml转化为对象
package org.frame.xstream; import org.frame.xstream.dataobject.Person; import org.frame.xstream.dataobject.PhoneNumber; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.StaxDriver; public class TestXStream { public static void main(String[] args) { //声名xstream XStream xstream = createByXPP3(); xstream.alias("person", Person.class); xstream.alias("phonenumber", PhoneNumber.class); //组织对象 Person joe = new Person("Joe", "Walnes"); joe.setPhone(new PhoneNumber(123, "1234-456")); //生成xml String xml = xstream.toXML(joe); System.out.println(xml); Person re = (Person) xstream.fromXML(xml); System.out.println(re.getFirstname()); System.out.println(re.getLastname()); System.out.println(re.getPhone().getCode()); System.out.println(re.getPhone().getNumber()); } /** * XPP3. * * javax.xml.parsers.DocumentBuilderFactory * @return */ public static XStream createByXPP3(){ return new XStream(); } /** * JAXP DOM parser * * javax.xml.parsers.DocumentBuilderFactory * @return */ public static XStream createByDomDrive(){ return new XStream(new DomDriver()); } /** * Java 6 the integrated StAX parser * <?xml version="1.0" ?> * * @return */ public static XStream createByStax(){ return new XStream(new StaxDriver()); } } 5. 可以使用xstream高级有功能,使实体与xml名字不对应也能互转package org.frame.xstream; import org.frame.xstream.dataobject.Person; import org.frame.xstream.dataobject.PhoneNumber; import org.frame.xstream.dataobject.blog.Author; import org.frame.xstream.dataobject.blog.AuthorConverter; import org.frame.xstream.dataobject.blog.Blog; import org.frame.xstream.dataobject.blog.Entry; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.StaxDriver; public class TestXStreamAlias { public static void main(String[] args) { Blog teamBlog = new Blog(new Author("Guilherme Silveira")); teamBlog.add(new Entry("first","My first blog entry.")); teamBlog.add(new Entry("tutorial", "Today we have developed a nice alias tutorial. Tell your friends! NOW!")); XStream xstream = createByXPP3(); // xstream.alias("blog", Blog.class); // xstream.alias("entry", Entry.class);//指定类的别包 // xstream.aliasPackage("org.ycl", "org.frame");//改变包名 xstream.processAnnotations(Blog.class);//启动Blog类的注解 // xstream.useAttributeFor(Blog.class, "writer");//设置节点为属性 xstream.aliasField("author", Blog.class, "writer");//指定类中属性的别名 xstream.processAnnotations(Entry.class);//启动Entry类的注解 //如何把Anthor对象转化为String //xstream.registerConverter(new AuthorConverter()); // xstream.addImplicitCollection(Blog.class, "entries");//不显示集合元素. String xml = xstream.toXML(teamBlog); System.out.println(xml); Blog re = (Blog) xstream.fromXML(xml); System.out.println(re.getContent()); System.out.println(re.writer.getName()); } /** * XPP3. * * javax.xml.parsers.DocumentBuilderFactory * @return */ public static XStream createByXPP3(){ return new XStream(); } /** * JAXP DOM parser * * javax.xml.parsers.DocumentBuilderFactory * @return */ public static XStream createByDomDrive(){ return new XStream(new DomDriver()); } /** * Java 6 the integrated StAX parser * <?xml version="1.0" ?> * * @return */ public static XStream createByStax(){ return new XStream(new StaxDriver()); } }
发表评论
-
Xml与Java Object 的转换[JAXB]
2013-12-09 15:25 8110package ycl.learn.xml.jaxb; ... -
dom,sax,dom4j,jdom,xerces
2013-04-10 16:41 3053dom,sax,dom4j,jdom的关系就不描述了.xerc ... -
Spring的schemaResolver
2012-12-18 11:01 1629Spring解析xml可以参考以上,可以指定自定义的schem ... -
Sax解析Xml
2012-12-12 14:01 998对于解析大型的xml,可能使用整个document或整个文件都 ... -
Xml转化为Java,Java转化为Xml[JAXB]
2012-12-12 13:51 1943JAXB:这是java处理xml的标 ... -
Spring读取xml文件[schema/dtd]
2012-12-12 13:44 4901主测试类如下: 说明 使用了ErrorHandler,主要 ... -
Spring,Struts的DTD验证
2010-10-12 11:04 7693一般比较正式的XML信息中都会包含对应的DTD声明,用来定义 ...
相关推荐
Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream是一个开源的Java库,由Johannes Link创建。它提供了简洁、直观的API来处理XML...
而XStream是一个Java库,它提供了简单且直观的方式来序列化和反序列化Java对象到XML,以及从XML回溯到Java对象。本篇文章将深入探讨XStream解析XML的示例,帮助你理解和掌握这一强大的工具。 首先,我们需要理解...
**XStream解析XML实例** 在Java开发中,处理XML数据是一项常见的任务,XStream库提供了一个简单而强大的方式来将Java对象序列化为XML,以及从XML反序列化回Java对象。这个实例将深入探讨如何使用XStream进行XML操作...
### Xstream:Java与XML之间的桥梁 Xstream是一款强大的Java库,用于实现Java对象与XML文档之间的转换。这种转换不仅支持基本数据类型,也适用于复杂的数据结构,包括自定义类和集合。Xstream的设计旨在简化序列化...
XStream是一款开源的Java库,用于简化XML文件的序列化与反序列化过程。它的设计理念是将XML数据映射到Java对象模型,反之亦然,而无需复杂的配置或显式的映射规则。XStream支持广泛的Java类型,并且易于集成到现有的...
XStream库提供了一个简单、直观的方式来实现这种转换,使得XML序列化和反序列化变得非常方便。本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一...
Xstream则是一个Java库,它提供了将Java对象序列化为XML,以及从XML反序列化回Java对象的能力。在处理复杂的XML文件时,Xstream因其简单易用和灵活性而备受青睐。本篇文章将深入探讨如何利用Xstream解析XML文件,并...
XStream是一个强大的Java库,它允许我们方便地将Java对象序列化为XML,反之亦然。在这个场景中,我们将探讨如何使用XStream将XML文档转换成Java对象,进而转化为JSON对象。 首先,我们需要引入XStream库。XStream的...
**XStream XML解析** XStream 是一个开源的 Java 库,它提供了一种简单而有效的方式来将 Java 对象序列化为 XML 和从 XML 反序列化回 Java 对象。这个库的强大之处在于其简洁的API和对复杂Java对象模型的处理能力。...
xStream是一个轻量级的Java库,用于将Java对象序列化为XML,同时也能将XML反序列化回Java对象。这个强大的工具同样支持JSON格式,使得在Java应用程序中处理XML和JSON数据变得非常便捷。本篇文章将深入探讨xStream...
在实际项目中,XStream的强大之处在于其灵活性和易用性。它可以轻松地处理复杂的对象结构,并且提供了许多自定义选项,如日期格式化、类型转换等。但是,由于XStream默认的信任所有输入,所以在处理不受信任的数据时...
XStream是一个轻量级、高性能的Java库,它能够将Java对象序列化为XML,反之也能将XML反序列化为Java对象。这使得XML数据与Java对象之间的转换变得非常简单。 **XStream库的核心特性:** 1. **直观的映射:** ...
【标题】:“xStream 实现xml与 java对象的转换” 在Java开发中,XML作为一种常见的数据交换格式,常用于存储和传输数据。然而,XML与Java对象之间的转换并不总是直观和简便的。这时,xStream库应运而生,它提供了...
XStream是一个Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML处理过程。 XStream的工作原理是基于反射和类型转换,它可以自动地映射Java类的字段到XML元素,反之亦然。这...
在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...
XStream库提供了一个优雅的方式来将Java对象转换为XML,反之亦然,使得处理XML数据变得更加简单。本教程将深入探讨如何使用XStream进行XML操作。 一、XStream简介 XStream是一个开源库,由Johannes Link开发,它...
本项目提供了一个完整的Java工程示例,演示了如何使用XStream实现XML到POJO以及POJO到XML的双向转化,并包含了必要的jar包和测试类,可以直接运行。 XStream是JVM平台上的一个开源库,由XStream Software公司开发,...
本篇将详细讲解XML的解析方式及其在Java中的应用,特别是如何使用XStream库进行JavaBean与XML之间的互转。 1. **XML解析方式** - DOM解析:Document Object Model,它一次性加载整个XML文档到内存,形成一棵树形...
在缺省情况下,XStream不需要配置映射关系,对象和字段将映射为同名XML元素。但是当对象和字段名与XML中的元素名不同时,XStream支持指定别名。XStream支持以方法调用的方式,或是Java 标注的方式指定别名。 ...
在Java开发中,数据转换是常见的任务之一,特别是在处理XML数据时。xStream是一个轻量级的库,它提供了一种简单的方式来将Java对象序列化为XML,反之亦然。这个工具类的目标就是利用xStream的功能,方便地将XML文档...