从一个范例看XML的应用
引言
如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个问题:在那篇文章的方式2中,客户端仅仅是发送了页面上一个文本框的内容到服务端,而服务端的Web服务方法也只接收一个来自客户端的字符串类型的数值。而很多时候,服务端的方法期望接收的是一个自定义类型,或者是多个不同类型的参数。为了能够处理这种由一个字符串包含多种不同类型值情况,我们可以采用XML。
这篇文章将构建一个简单的图书查询页面,通过这个程序,我们将会看到XML、XSD模式验证、XSLT样式转换,以及Asp.Net脚本回调功能的一个综合应用。
数据库建立和数据访问
我们先看一下这个Web页面实现的功能:页面提供一些文本框供用户输入,包括书名、出版社、作者等信息,然后将这些信息发往服务器,服务器对数据库进行查询,然后返回查询结果。如果是通常的Asp.Net开发,完成这样的功能是很基本的要求,根本用不着我花时间写这些文字,但这里我们希望实现Ajax方式的效果,所以就需要解决引言中提出的问题。
如果你看过我的文章,那么应该知道我喜欢循序渐进的写作方式,这篇也是一样,我们先从数据库建立开始。由于数据库和数据访问并不是本文的重点,所以我只简单地描述一下步骤。在本地SQL Server或者直接在App_Data下新建一个数据库,起名叫SiteDB,然后建一个表Book,字段的设定如下:
随后填充一些范例数据,如果你想节约点时间,那么可以直接下载本文所附带的代码,在App_Data文件夹下包含有SiteDB数据库。
接下来我们在App_Code文件夹下添加一个SiteBLL.cs文件,本文用到的所有代码逻辑都包含在了SiteBLL类中,这么做显然是不妥的,但这里我们主要关注的是XML的应用,而非构架与设计,所以暂且就这个样子好了。很容易就能想到,我们要添加的第一个方法,会拥有下面这样的签名,它根据方法的参数查询数据库,然后以DataSet的形式返回结果:
private static DataSet SearchBook
(string name, string author, string publisher, DateTime pubDate, decimal price)
如果要构建一个实际的查询,那么需要很大量的数据才能保证几乎每次搜索都能够获得到数据来提供演示,而实际上我们只添加了5条范例数据,所以让我们干脆将它们全部返回,而忽略这里的参数,但在实际当中,当然是根据这些参数来获得实际的返回数据:
private static DataSet SearchBook(string name, string author,
string publi
相关文档:
/**
* ftp上传文件JavaBean
* @author Administrator
*
*/
public class FtpBean {
//ftp服务地址
private String ftpUrl="";
//ftp用户名
private String userName="";
//ftp密码
private String passWord="";
public String getF ......
范例如下:
var xml:XML=
<body>
text1
<bar>barText1</bar>
& ......
2)如何创建一个xml文档
由于xml实质也只是一个文本文件,所以最简单你可以直接使用System.IO下的类生成一个文件,并存储成xml文件,当然,你需要手动保证该文件形式良好,比如必须有根元素、必须有关闭标签、必须正确嵌套等等。
如果你懒得自己去想文件的形式,可以使用System.Xml下的类。
Code
Xml ......
1、安装DOM4j
http://www.dom4j.org/
2、安装jaxen
http://jaxen.org/releases.html
3、代码
package extract;
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
import java.util.*;
public class XmlExtract {
private SAXReader reader;
private Docum ......
/// <summary>
/// 支持XML序列化的泛型 Dictionary
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
[XmlRoot("SerializableDictionary")]
public class SerializableDictionary<TKey, TValue& ......