本文作者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表单里。
|