熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#高級編程:使用 XmlTextReader類[2]

2013-11-13 11:06:50  來源: .NET編程 
    ——此文章摘自《C#高級編程(第版)》定價元 特價元 購買

    下面的示例說明了如何使用ReadElementString()(這段代碼在XmlReaderSample文件夾中)注意這個示例使用FileStream所以需要通過using語句來包括SystemIO命名空間
    protected void button_Click (object sender SystemEventArgs e)
    {
       //use a filestream to get the data
       FileStream fs = new FileStream(\\\\\\booksxml FileModeOpen);
       XmlTextReader tr = new XmlTextReader(fs);
       while(!trEOF)
       {
          //if we hit an element type try and load it in the listbox
          if(trMoveToContent() == XmlNodeTypeElement && trFTEL==title)
          {
             listBoxItemsAdd(trReadElementString());
          }
          else
          {
             //otherwise move on
             trRead();
          }
    }
    }

    在while循環中使用MoveToContent查找類型為XmlNodeTypeElement和名稱為title的節點我們使用XmlTextReader的EOF屬性作為循環條件如果節點的類型不是Element或者名稱不是titleelse子句就會調用Read()方法進入下一個節點查找到一個滿足條件的節點後就把ReadElementString()的結果添加到列表框中這樣就在listbox中添加一個書名注意在成功執行了ReadElementString()後不需要調用Read()方法這是因為ReadElementString()已經查看了整個Element然後定位到下一個節點上

    如果刪除了if子句中的&& trFTEL==title在拋出XmlException異常時就必須捕獲它如果查看一下數據文件就會發現MoveToContent()查找到的第一個元素是<bookstore>因為它是一個元素所以把檢查過程放在if語句中但是它不包含簡單的文本類型因此會讓ReadElementString()引發一個XmlException異常解決這個問題的一種方式是把ReadElementString()調用放在它自己的函數中現在如果在這個函數中ReadElementString()調用失敗就可以處理錯誤返回給調用函數

    下面就調用這個新方法LoadList()把XmltextReader作為參數進行了這些修改後該示例如下所示(這段代碼在XmlReaderSample文件夾中)
    protected void button_Click (object sender SystemEventArgs e)
    {
       //use a filestream to get the data
       FileStream fs = new FileStream(\\\\\\booksxml FileModeOpen);
       XmlTextReader tr = new XmlTextReader(fs);
       while(!trEOF)
       {
          //if we hit an element type try and load it in the listbox
          if(trMoveToContent() == XmlNodeTypeElement)
          {
             LoadList(tr);
          }

[]  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/15182.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.