ASP.Net中使用XMLDataSource
在Web开发中,程序和数据库打交道是常有的事情。在平时使用过程中,使用较多的是MS SQLSERVER,因此经常用到SQLDataSource将数据绑定的数据控件上。有时数据量较小,无需要在数据库中创建表来维护,可以考虑使用一些文件报存数据。在Web应用中,XML可作为轻量级的数据库。而读取XML文件中的数据,我么就可以用到XMLDataSource了。
假设我用一个XML文件存储了省份的信息(这是一个几乎不需要维护的信息),在aspx页面上使用DropDownList控件绑定。首先看VS中如何不需要写代码将数据绑定上去。准备好XML文件(Provice.xml),如下
<Provinces>
<provinceItem name="北京" id="1"></provinceItem>
<provinceItem name="上海" id="2"></provinceItem>
<provinceItem name="广东" id="3"></provinceItem>
<provinceItem name="天津" id="4"></provinceItem>
<provinceItem name="河北" id="5"></provinceItem>
<provinceItem name="吉林" id="6"></provinceItem>
<provinceItem name="浙江" id="7"></provinceItem>
<provinceItem name="湖南" id="8"></provinceItem>
</Provinces>
aspx页面上放一个DropDownList,为其选择数据源。在提供的数据源选项中,选择XML文件,选中刚才准备好的XML文件。此时,会让你选择DropDownList的显示字段和值字段(注意,Xml文件中的字段已经被DropDownList解析到了)。选择name为DataTextField,id为DataValueField。配置完成后,在浏览器中预览,发现数据已经绑定到DropDownList上了。但是,按照上面Xml的格式写法,name和id是provinceItem元素的属性。若将Xml改换成下面这种格式(新建一个City.xml文件),用上述同样方法去绑定,在浏览器中查看页面时,发现报错。DataBinding:“System.Web.UI.WebControls.XmlDataSourceNodeDescriptor”不包含名为“cityName”的属性。
<?xml version="1.0" encoding="utf-8" ?>
<City>
<CityItem>
<cityName>上海市</cityName>
<cityId>1</cityId>
</CityItem>
<CityItem>
<cityName>杭州市</cityName>
<cityId>2</cityId>
</CityItem>
<CityItem>
<cityName>长沙市</cityName>
<cityId>3</cityId>
</CityItem>
<CityItem>
<cityName>长春市</cityName>
<cityId>4</cityId>
</CityItem>
<CityItem>
<cityName>石家庄市</cityName>
<cityId>5</cityId>
</CityItem>
<CityItem>
<cityName>天津市</cityName>
<cityId>6</cityId>
</CityItem>
<CityItem>
<cityName>北京市</cityName>
<cityId>7</cityId>
</CityItem>
</City>
此时,需要另外一个文件,后缀xslt的文件。它的作用是当作XML文件的模版。XmlDataSource会按照XSLT规定的模板读取并转换XML文档里的数据,而不考虑XML文档里规定的数据结构。下面为City.xml创建一个模版,如下:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/> <xsl:template match="City">
<xsl:copy>
<xsl:apply-templates select="CityItem"/>
</xsl:copy>
</xsl:template>
<xsl:template match="CityItem">
<CityItem>
<xsl:attribute name="cityName">
<xsl:value-of select="cityName"/>
</xsl:attribute> <xsl:attribute name="cityId">
<xsl:value-of select="cityId"/>
</xsl:attribute> </CityItem>
</xsl:template>
</xsl:stylesheet>
此后,再次绑定,在选择xml文件时,有一项可供选择转换文件,选中刚才创建的模板City.xslt文件。再次浏览其中浏览网页,完成了City.xml通过XmlDataSource绑定至DropDownList上。
版权声明:本文为博主原创文章,未经博主允许不得转载。
ASP.Net中使用XMLDataSource的更多相关文章
- ASP.net中的Cache使用介绍
1.1.1 摘要(http://www.cnblogs.com/rush/archive/2012/06/30/2571438.html) 最近我们的系统面临着严峻性能瓶颈问题,这是由于访问量增加,客 ...
- ASP.NET中常用的优化性能的方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
- asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题
最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception Sys ...
- ASP.NET中Session的sessionState 4种mode模式
1. sessionState的4种mode模式 在ASP.NET中Session的sessionState的4中mode模式:Off.InProc.StateServer及SqlServer. 2. ...
- Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值
Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值,去属性表中设置这时候会提示你去属性表中更改返回类型. 其实存储过程返回的也是一张表,只不过有时候存储过程有点复杂或者写法不规范的话不能 ...
- ASP.NET中后台数据和前台控件的绑定
关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...
- asp.net中缓存的使用介绍一
asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...
- ASP.NET中Ajax的用法
在ASP.NET中应用Ajax的格式如下: 前台代码(用JQuery库) $.ajax({ type: "POST", async: true, url: "../Aja ...
- Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)
有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...
随机推荐
- 重写ResultSet实现分页功能(最好的分页技术)(转)
1.首先定义一个接口Pageable 继承ResultSet这个类 并在接口中定义一些自己的方法,具体方法如下: package com.page; import java.sql.ResultSet ...
- codechef Little Elephant and Permutations题解
The Little Elephant likes permutations. This time he has a permutation A[1], A[2], ..., A[N] of numb ...
- linux下Ftp环境的搭建
Ftp环境的搭建 1.ftp软件的安装 使用ssh远程连接linux系统,上传和下载一些文件,Ftp是不可少的 Ftp的安装很简单,远程登录系统后使用命令 yum list vsftpd 通过提示 ...
- 【原创】poj ----- 1182 食物链 解题报告
题目地址: http://poj.org/problem?id=1182 题目内容: 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- swift-辞典NSDictionary定义,变化的关键,删/加入关键
// Playground - noun: a place where people can play import UIKit //--------------------------------- ...
- JQuery+CSS3实现封装弹出登录框效果
原文:JQuery+CSS3实现封装弹出登录框效果 上次发了一篇使用Javascript来实现弹出层的效果,这次刚好用了JQuery来实现,所以顺便记录一下: 因为这次使用了Bootstrap来做一个 ...
- 使用require.js和backbone实现简单单页应用实践
前言 最近的任务是重做公司的触屏版,于是再园子里各种逛,想找个合适的框架做成Web App.看到了叶大(http://www.cnblogs.com/yexiaochai/)对backbone的描述和 ...
- CSU 1659: Graph Center(SPFA)
1659: Graph Center Time Limit: 1 Sec Memory Limit: 128 MB Submit: 63 Solved: 25 [id=1659"> ...
- (转)Maven最佳实践:划分模块
“分天下为三十六郡,郡置守,尉,监” —— <史记·秦始皇本纪> 所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块 ...
- C++习题 对象数组输入与输出
Description 建立一个对象数组,内放n(n<10)个学生的数据(学号.成绩),用指针指向数组首元素,输出第奇数(1,3,5,7)个学生的数据. Input n和n个学生的学号.成绩 O ...