採用XML資料來填充ASP表單

來源:互聯網
上載者:User

本文作者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表單裡。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.