使用 XStream实现JavaBean 与 XML/JSON 之间相互转换
XML 和 JSON 是当今常用的两种数据描述与传输的格式,特别是涉及到 JS 时使用 JSON 颇为频繁。自然,在 Java 的世界里少不了完成 JavaBean 与这两种格式相互转换的组件,那就是 XStream 和 JSON-lib。这里我简单记下 XStream 的用法。
其实相类似的工具早已有之。如果用过 DWR 的同志,一定有印像,DWR 进行远程方法调用时也能为你完成 JavaBean 和 JSON 格式的双向转换的,所依赖的是它的各种 Converter。再要是对 Struts1 的细节有所注意的话,Struts1 的 ActionServlet 在初始化 struts-config.xml 时是通过 commons-digester 来完成 XML 到 JavaBean 转换的。相应的 Apache 也有一个 commons-betwixt 实现了 JavaBean 到 XML 的生成。
而我这里要说的 XStream(http://xstream.codehaus.org) 把 JavaBean 与 XML/JSON 间的双向转换统统实现了,而 JSON-lib 则如其名,功能太显简陋了。要使用 XStream,需下载到 xstream包,当前版本是 1.3.1。然后把 xstream-1.x.x.jar 添加到项目的 Classpath 上,可不依赖于其他包。在某些有要求时候才需要用到 lib 目录中的其他包,下面会提到。
简单说明 XStream 的使用吧,分为 JavaBean -> XML、JavaBean -> JSON、 XML -> JavaBean、JSON -> JavaBean 几部分内容。在开始例子之前,先定义三个类(都在 com.unmi.model 包中):
public class Customer {
private int custId;
private String custName;
private List<Order> orders;
//setter/getter 和构造方法略
}
public class Order {
private int orderId;
private String orderName;
private Product[] products;
//setter/getter 和构造方法略
}
public class Product {
private int prodId;
相关文档:
///通过传入的特定XML字符串,通过 ReadXml函数读取到DataSet中。
protected static DataSet GetDataSetByXml(string xmlData)
{
try
{
&nbs ......
开发中经常遇到要和各种各样的 XML 打交道,编辑 XML 文件时最头痛的便是要记住许多 XML 元素名称、属性名称。
幸运的是,Vistual Studio 的 XML 智能提示功能可以大大地减轻这一痛苦。只需通过添加自定义的 XSD 文件使得在编辑 XML 文件时获得V ......
xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
......
import java.io.File;
import java.util.concurrent.CountDownLatch;
import com.sleepycat.db.Environment;
import com.sleepycat.db.EnvironmentConfig;
import com.sleepycat.db.LockDetectMode;
import com.sleepycat.dbxml.XmlContainer;
import com.sleepycat.dbxml.XmlContainerConfig;
im ......
1、初始化
Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。
SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。
2、输出
Save 将XML数据写入文件中。类似C#的Save。
GetDoc 将整个XML数据文档作为字符串返回。
3、改变当前位置
FindElem 定位到下一个元素,可能和一个标签名或路 ......