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上。
版权声明:本文为博主原创文章,未经博主允许不得转载。
缓慢行走的蜗牛