在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的更多相关文章

  1. ASP.net中的Cache使用介绍

    1.1.1 摘要(http://www.cnblogs.com/rush/archive/2012/06/30/2571438.html) 最近我们的系统面临着严峻性能瓶颈问题,这是由于访问量增加,客 ...

  2. ASP.NET中常用的优化性能的方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  3. asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题

    最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception Sys ...

  4. ASP.NET中Session的sessionState 4种mode模式

    1. sessionState的4种mode模式 在ASP.NET中Session的sessionState的4中mode模式:Off.InProc.StateServer及SqlServer. 2. ...

  5. Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值

    Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值,去属性表中设置这时候会提示你去属性表中更改返回类型. 其实存储过程返回的也是一张表,只不过有时候存储过程有点复杂或者写法不规范的话不能 ...

  6. ASP.NET中后台数据和前台控件的绑定

    关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...

  7. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  8. ASP.NET中Ajax的用法

    在ASP.NET中应用Ajax的格式如下: 前台代码(用JQuery库) $.ajax({ type: "POST", async: true, url: "../Aja ...

  9. Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)

    有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...

随机推荐

  1. REST Service 基础 A further step.

    1. REST Service虽然实现简单, 但也功能丰富, 可以用来实现各种基于Web的服务(service). 2. REST Service的一些特点: 1)平台无关 2) 语言无关 3)基于H ...

  2. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  3. 百度经纬度和google经纬度互转

    原文:百度经纬度和google经纬度互转 百度地图的坐标转换,由于百度地图在GCJ02协议的基础上又做了一次处理,变为 BD09协议的坐标,以下是坐标的转化方式,可以方便和其他平台转化 private ...

  4. Windows Phone开发(21):做一个简单的绘图板

    原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...

  5. c语言结构体使用方法

      结构(struct)      结构是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合.  结构中能够使用不同的数据类型.      1. 结构说明和结构变量定义      在Turbo ...

  6. 更具体的描述JNI

    JNI事实上,Java Native Interface缩写,也就是说,java本地接口. 它提供了许多API实现和Java并与其他语言的沟通(主要C&C++). 也许很多人认为Java够劲. ...

  7. json2.js参考

    json2.js使用參考 json2.js提供了json的序列化和反序列化方法,能够将一个json对象转换成json字符串,也能够将一个json字符串转换成一个json对象. <html> ...

  8. jQuery 焦点图,图像文件js档

    jQuery 焦点图,图片文件在js文件里 演示 XML/HTML Code <div id="photo_container"></div> JavaSc ...

  9. javascript中的三角学

    三角学主要研究三角形和它们的边角关系,包含一个90度角的三角形被称为直角三角形.在这里主要研究直角三角形相关的知识. 1. 角度和弧度 360(角度) = 2*Math.PI(弧度) degrees ...

  10. Myeclipse 10/2014 配置插件(svn、maven、properties、velocity)方法

    一.构造SVN具体说明 什么是SVN? 管理软件开发过程中的版本控制工具. 以下会以两种方式来介绍怎么安装svn,myeclipse安装SVN插件步骤.以myeclipse 2014为例,第一种是最常 ...