使用 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;  
相关文档:
VC++中操作XML(MFC、SDK)
2009年01月07日 星期三 22:33
XML在Win32程序方面应该没有在Web方面应用得多,很多
Win32程序也只是用XML来存存配置信息而已,而且没有足够
的好处的话还不如用 ini。VC++里操作XML有两个库可以用:
MSXML和XmlLite。MSXML又细分了两种接口:DOM和SAX2。XP没自带有 XmlLite,只自带有2.x、3 ......
一个定义Email的例子
<?xml version="1.0">
<!DOCTYPE message[
<!ELEMENT message(header,body,signature,footer)> --定义了message的子元素
<!ELEMENT header(date,from,to,subject,banner)> --header还有子元素
<!ELEMENT ......
sd.xml文件:
<?xml version="1.0" encoding="gb2312"?>
<!--这是一个xml文件-->
<xml1>
<item name="1">第一个item</item>
<item name="2">
<item name="1">这个结点(1) ......
web.xml文件对于配置任何Java Web应用都必需的。
(1)配置Struts的ActionServlet
<servlet><!--元素来声明ActionServlet-->
<servlet-name><!--元素:用来定义Servlet的名称-->
<servlet-class><!--元素:用来指定Servlet的完整类名-->
<servlet>
<servlet-name& ......
using System;
using System.Data;
using System.IO;
using System.Xml;
using System.Text;
// 相应C#代码:
private string ConvertDataTableToXML(DataTable xmlDS)
{
MemoryStream stream = null;
XmlTextWriter writer = null;
try
{
stream = new MemoryStream();
writer = new XmlTextWriter(stream, E ......