本文作者brian schaffner是富士通咨询公司的副主任。他为富士通的技术咨询公司提供架构、设计和开发支持。
在本篇文章里,我们会使用一个简单的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表单里。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器