从一个范例看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
相关文档:
XML Schema import 元素
定义和用法
import 元素用于向一个文档添加带有不同目标命名空间的多个 schema。
元素信息
出现次数
无限制
父元素
schema
内容
annotation
语法
<import
id=ID
namespace=anyURI
schemaLocation=anyURI
any attributes
>
(annotation?)
< ......
原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWriter和BinaryReader来读写,突然想到能不能用XML来序列化?于是在网上查了些资料便写了些实践性代码,做些记录,避免以后忘记。
序列化对象
public class People
......
XML解析器的作用:为应用程序从XML文件中解析出所需要的数据。
下面通过一个例子,来了解,如何用XML解析器,来解析一个XML文件中的数据。
1、Types.xml(显示吉他的类别)
<?xml version="1.0" encoding="UTF-8"?>
<types>
<name>电吉他
<music>玩摇滚</music>
</name>
......
/* Author: 杨宇 yangyu@sina.cn */
/*
用法示例:
$cls_xml = new cls_xml();
if ($array){
$cls_xml->array2xml($array);
echo $cls_xml->getXml();
}else{
echo '';
}
*/
class cls_xml{
var $xml;
&nbs ......
1、Class.forName的作用?为什么要用?
答:调用该访问返回一个以字符串指定类名的类的对象。
2、Jdo是什么?
答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC ......