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上。



版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2015-01-13 19:30  andywangguanxi  阅读(2116)  评论(0编辑  收藏  举报