采用XML数据来填充ASP表单
来源:新云 发布时间:2008-05-04 13:32:00
在本篇文章里,我们会使用一个简单的Web表单,它会列出某个目录下的一些XML文件。然后,我们会从这个目录里选择一个文件,将它发送到另一个Web表单里,后
者会使用被选中的XML文件来填充某些文本字段。
示例XML
我们的示例XML文档包含有一组含有基本信息的元素,如
Listing A所示:
Listing A: sample.xml
<Sample>
<Name>John Doe</Name>
<Address>900 N. Michigan Ave</Address>
<City>Chicago</City>
<State>IL</State>
<Zip>60614</Zip>
<Phone>630-555-5555</Phone>
</Sample>
为了让本文的说明更加有趣,我们会再创建两个含有不同数据的示例文件,如Listing B和Listing C所示:
Listing B: sample2.xml
<Sample>
<Name>George W. Bush</Name>
<Address>1600 Pennsylvania Ave NW</Address>
<City>Washington</City>
<State>DC</State>
<Zip>20500</Zip>
<Phone>202-456-1111</Phone>
</Sample>
Listing C: sample3.xml
<Sample>
<Name>Bill Gates</Name>
<Address>1 Microsoft Way</Address>
<City>Redmond</City>
<State>WA</State>
<Zip>98052</Zip>
<Phone>425-882-8080</Phone>
</Sample>
创建一个叫做C:\xmldocs的目录,并将所有三个示例文件放到这个目录下。
Web表单
我们会为我们的应用程序创建两个Web表单。我们要用第一个表单来选择XML文件,用第二个表单来显示XML数据。
首先要用Visual Studio .NET创建一个新的ASP.NET Web应用程序。然后将最初的表单保存为SelectFile.aspx。如果你双击这个表单,代码编辑器就会被打开。
你首先需要把下面这一行加到代码的最前面,才能够将IO包添加到你的应用程序里:
usingSystem.IO;
然后,找到代码内的Page_Load()方法。你需要将这个方法编辑成像下面Listing D里的代码一样:
Listing D: SelectFile''sPage_Load() method
private void Page_Load(object sender, System.EventArgs e) {
System.IO.DirectoryInfo dir;
System.IO.FileInfo[] files;
System.IO.FileInfofinfo;
System.Collections.IEnumeratorfileEnum;
dir = new DirectoryInfo ("C:\\xmldocs");
files = dir.GetFiles ("*.xml");
fileEnum = files.GetEnumerator();
Response.Write("Please select the XML file to load: <br><br>\n");
while (fileEnum.MoveNext()) {
finfo = (FileInfo) fileEnum.Current;
Response.Write("<a href=\"ShowData.aspx?filename=" + finfo.Name + "\">" + finfo.Name + "</a><br>\n");
}
}
现在向你的项目里添加一个新的Web表单——ShowData.aspx。在这个表单里放置六个文本框,并将其命名为:txtName、txtAddress、txtCity、txtState、txtZip和txtPhone。同样的,在表单里创建六个标签,并将其标题栏分别命名为Name(姓名)、Address(地址)、City(城市)、State(州)、Zip(邮政编码)和Phone(电话)。
双击ShowData表单来启动代码编辑器。你需要编辑ShowData表单的Page_Load()方法,使其看起来就像Listing E里的一样:
Listing E: ShowData''sPage_Load() method
private void Page_Load(object sender, System.EventArgs e) {
string filename;
XmlTextReaderxmlReader;
filename = "C:\\xmldocs\\" + Request.Params.Get("filename");
xmlReader = new XmlTextReader(filename);
while (xmlReader.Read()) {
if (xmlReader.NodeType == XmlNodeType.Element) {
switch (xmlReader.LocalName) {
case "Name":
txtName.Text = xmlReader.ReadString();
break;
case "Address":
txtAddress.Text = xmlReader.ReadString();
break;
case "City":
txtCity.Text = xmlReader.ReadString();
break;
case "State":
txtState.Text = xmlReader.ReadString();
break;
case "Zip":
txtZip.Text = xmlReader.ReadString();
break;
case "Phone":
txtPhone.Text = xmlReader.ReadString();
break;
}
}
}
}
你还需要把下面这一行加到代码的最前面,才能够将XML包添加到你的应用程序里:
usingSystem.Xml;
这段代码在本质上同我们在C#表单例子里所使用的代码相同。其主要的不同之处在于,我们不再利用按钮来调用这段代码,而且我们也不再需要使用OpenFileDialog控件来寻找XML文件。文件名是由SelectFile的Web表单所提供的,这段代码在ShowData表单被加载的时候被调用。
我们使用XmlTextReaders Read()方法在XML文档里迭代。随着每次对Read()的调用,我们都会处理另一个XML节点。我们只用简单地检查一下,以确保该节点是一个元素,然后就可以使用XML元素节点里的字符串数据来填充我们表格里相应的文本框了。
运行演示程序
一旦你完成了演示表单的编码和编译,你就已经准备好使用它们了。将你的Web浏览器指向SelectFile表单。当页面被载入的时候,它就应该能够列出我们先前创建的示例文件了。只用简单地点击其中一个文件名,你就会看到数据填充在ShowData表单里。
猜你喜欢
- 本文实例讲述了python关于矩阵重复赋值覆盖问题的解决方法。分享给大家供大家参考,具体如下:import itertoolsimport
- Python画图主要用到matplotlib这个库。Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的
- mysql-5.7.17的安装在文章下面有介绍,大家可以参考下。下面先给大家介绍下Mysql 5.7.17安装后登录mysql的教程,一起看
- 新公司是内网环境,无法使用pip安装第三方资源库,在网上搜下,可以直接使用pip打包本机所安装的第三方资源库,打包成whl文件一 进入cmd
- 在我供职的公司不仅仅拥有Oracle数据库,同时还拥有SQL Server数据库,所以我经常遇见人们向我提两种问题。 第一种通常都是以&qu
- 本文实例为大家分享了python使用matplotlib画饼状图的具体代码,供大家参考,具体内容如下代码与详细注释from matplotl
- 这篇文章主要介绍了基于python3抓取pinpoint应用信息入库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 众所周知,OpenStack的通信方式有两种,一种是基于HTTP协议的RESTFul API方式,另一种则是RPC调用。两种通信方式的应用场
- 1. 设置fomat格式,如下: # 取前5个字符,跳过4个字符华,再取3个字符 format = '5s 4x 3s' 2
- 本文记录了MySQL下载安装详细教程,供大家参考,具体内容如下1.下载MySQL数据库可以访问官方网站:2.点击DOWNLOADS模块下的C
- mssql 错误日志文件存放位置:C:\Program Files\Microsoft SQL Server\MSSQL\LOG 用记事本查
- you-get是github上python的一个开源库(https://github.com/soimort/you-get),使用you-
- 自上一篇文章 Z Story : Using Django with GAE Python 后台抓取多个网站的页面全文 后,大体的进度如下:
- 本文分析了Python出现segfault错误解决方法。分享给大家供大家参考,具体如下:最近python程序在运行过程中偶尔会引发系统seg
- Socket 套接字:通讯端点 简介socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读
- type PipeWritertype PipeWriter struct { // contains
- 话不多说,请看代码:<!DOCTYPE HTML> <html> <head> <meta cha
- python爬虫主要用两个库:Urllib和BeautifulSoup4。一个用来爬取网页,一个用来解析网页。Urllib是Python内置
- 本文实例讲述了Python通过for循环理解迭代器和生成器。分享给大家供大家参考,具体如下:迭代器可迭代对象通过 for…in… 循环依次拿
- 目录1、为什么使用2、空结构体的特殊性3、使用场景3.1 实现方法接收者3.2 实现集合类型3.3 实现空通道前言:在 Go 语言中,有一个