最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C#借助.NET框架中的XmlTextReader類讀取XML的方法

 更新時(shí)間:2016年04月08日 17:08:33   作者:hzy3774  
這篇文章主要介紹了詳解借助.NET框架中的XmlTextReader類讀取XML的方法,這種方式的執(zhí)行效率還是比較令人滿意的,需要的朋友可以參考下

XmlTextReader 提供對(duì) XML 數(shù)據(jù)流的只進(jìn)只讀訪問。當(dāng)前節(jié)點(diǎn)指讀取器定位到的節(jié)點(diǎn)。使用任何讀方法推進(jìn)讀取器并且屬性反映當(dāng)前節(jié)點(diǎn)的值。
此類實(shí)現(xiàn) XmlReader 并符合 W3C 可擴(kuò)展標(biāo)記語言 (XML) 1.0 和“XML 中的命名空間”建議。XmlTextReader 提供以下功能:

  • 執(zhí)行格式良好的 XML 的規(guī)則。
  • XmlTextReader 不提供數(shù)據(jù)驗(yàn)證。
  • 檢查 DocumentType 節(jié)點(diǎn)是否是格式良好的。XmlTextReader 檢查 DTD 的格式是否正確,但不使用 DTD 進(jìn)行驗(yàn)證。
  • 對(duì)于 NodeType 為 XmlNodeType.EntityReference 的節(jié)點(diǎn),返回單個(gè)空 EntityReference 節(jié)點(diǎn)(即 Value 屬性為 String.Empty)。
  • 不展開默認(rèn)屬性。

因?yàn)?XmlTextReader 不執(zhí)行數(shù)據(jù)驗(yàn)證所需的額外檢查,所以它提供快速格式正確性分析器。

若要執(zhí)行數(shù)據(jù)驗(yàn)證,請(qǐng)使用驗(yàn)證 XmlReader。有關(guān)更多信息,請(qǐng)參見 使用 XmlReader 驗(yàn)證 XML 數(shù)據(jù)。
若要從 XmlDocument 中讀取 XML 數(shù)據(jù),請(qǐng)使用 XmlNodeReader。
XmlTextReader 在發(fā)生 XML 分析錯(cuò)誤時(shí)引發(fā) XmlException。引發(fā)異常后,讀取器的狀態(tài)不可預(yù)知。例如,報(bào)告的節(jié)點(diǎn)類型可能不同于當(dāng)前節(jié)點(diǎn)的實(shí)際節(jié)點(diǎn)類型。使用 ReadState 屬性可以檢查讀取器是否處于錯(cuò)誤狀態(tài)。
有關(guān) XmlReader 類的進(jìn)一步論述,請(qǐng)參見 用 XmlReader 讀取 XML。
安全注意事項(xiàng):

  • 下面是使用 XmlTextReader 類時(shí)的注意事項(xiàng)。
  • XmlTextReader 引發(fā)的異??赡軙?huì)泄漏您不希望冒泡到應(yīng)用程序的路徑信息。應(yīng)用程序必須捕捉異常并進(jìn)行相應(yīng)的處理。
  • DTD 處理在默認(rèn)情況下是啟用的。如果擔(dān)心出現(xiàn)拒絕服務(wù)問題或者正在處理不受信任的源,則應(yīng)禁用 DTD 處理。將 ProhibitDtd 屬性設(shè)置為 true 可禁用 DTD 處理。
  • 如果啟用了 DTD 處理,則可使用 XmlSecureResolver 限制 XmlTextReader 可訪問的資源。還可以設(shè)計(jì)應(yīng)用程序以使 XML 處理受內(nèi)存和時(shí)間的約束。例如,在 ASP.NET 應(yīng)用程序中配置超時(shí)限制。
  • XML 數(shù)據(jù)可包括對(duì) DTD 文件等外部資源的引用。在默認(rèn)情況下,使用不具有用戶憑據(jù)的 XmlUrlResolver 對(duì)象解析外部資源。通過執(zhí)行下列操作之一,可以使此操作更加安全:
  • 通過將 XmlResolver 屬性設(shè)置為 XmlSecureResolver 對(duì)象限制 XmlTextReader 可訪問的資源。
  • 通過將 XmlResolver 屬性設(shè)置為空引用(在 Visual Basic 中為 Nothing) 不允許 XmlReader 打開任何外部資源。
  • XML 數(shù)據(jù)可以包含大量需要很多時(shí)間才能處理的屬性、命名空間聲明、嵌套元素等。若要限制發(fā)送到 XmlTextReader 的輸入的大小,請(qǐng)創(chuàng)建自定義的 IStream 實(shí)現(xiàn)并為其提供 XmlTextReader。
  • ReadValueChunk 方法可用于處理大的數(shù)據(jù)流。此方法一次讀取少量字符,而不是為整個(gè)值分配一個(gè)字符串。
  • 默認(rèn)情況下不展開常規(guī)實(shí)體。調(diào)用 ResolveEntity 方法時(shí)展開常規(guī)實(shí)體。

示例:
使用XmlTextReader從頭到尾閱讀xml文檔,比較適合大量數(shù)據(jù)讀取

static void Main(string[] args) 
    { 
      XmlTextReader reader; 
 
      if (File.Exists("student.xml"))//如果文件已存在,載入文檔 
      { 
        reader = new XmlTextReader("student.xml"); 
      } 
      else//否則 
      { 
        return; 
      } 
 
      int count = 0; 
      while (reader.Read())//閱讀下一個(gè) 
      { 
        if (reader.Name == "student") 
        { 
          //顯示讀取的屬性和中間文本 
          Console.WriteLine(reader.GetAttribute("id") + " " + reader.GetAttribute("age") + " " + reader.ReadString()); 
          count++; 
        } 
      } 
      reader.Close();//關(guān)閉閱讀器 
      Console.WriteLine("Count is " + count); 
      Console.ReadKey(); 
    } 

201648170644727.jpg (163×134)

 
當(dāng)然也可以用xmlDocument進(jìn)行結(jié)構(gòu)化讀取,但是讀取前系統(tǒng)會(huì)把整個(gè)文檔的結(jié)構(gòu)獲取進(jìn)來

static void Main(string[] args) 
    { 
      XmlDocument doc = new XmlDocument(); 
 
      if (File.Exists("student.xml"))//如果文件已存在,載入文檔 
      { 
        doc.Load("student.xml"); 
      } 
      else//否則 
      { 
        Console.WriteLine("文檔不存在!"); 
        Console.ReadKey(); 
        return; 
      } 
 
      XmlNodeList list = doc.DocumentElement.SelectNodes("student");//讀取根節(jié)點(diǎn)的所有子節(jié)點(diǎn),放到XmlNodeList中 
 
      foreach (XmlNode node in list)//從list中遍歷所有節(jié)點(diǎn) 
      { 
        XmlElement ele = (XmlElement)node;//節(jié)點(diǎn)可以有中間文本但是沒有屬性值,所以要先轉(zhuǎn)成element才能讀出屬性值 
        Console.WriteLine(ele.GetAttribute("id") + " " + ele.GetAttribute("age") + " " + ele.InnerText);//讀取數(shù)據(jù)/顯示 
      } 
 
      Console.ReadKey(); 
    } 

201648170731876.jpg (281×164)

 執(zhí)行效果完全一樣

相關(guān)文章

  • C#?Winform實(shí)現(xiàn)在Pancel上繪制矩形

    C#?Winform實(shí)現(xiàn)在Pancel上繪制矩形

    在C#的WinForms應(yīng)用程序中,Panel控件本身不直接支持繪圖功能,但可以通過在Panel上覆蓋OnPaint方法或者使用Graphics對(duì)象來在Panel上繪制圖形,下面我們就來看看具體實(shí)現(xiàn)方法吧
    2025-01-01
  • C#?Windows?Forms中實(shí)現(xiàn)控件之間的連接線的方法詳解

    C#?Windows?Forms中實(shí)現(xiàn)控件之間的連接線的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何在C#?Windows?Forms應(yīng)用程序中實(shí)現(xiàn)繪圖工具中多個(gè)控件之間的連接線功能,文中的示例代碼講解詳細(xì),需要的可以參考下
    2024-02-02
  • C#?實(shí)現(xiàn)Ping遠(yuǎn)程主機(jī)功能及代碼演示

    C#?實(shí)現(xiàn)Ping遠(yuǎn)程主機(jī)功能及代碼演示

    這篇文章主要介紹了C#?實(shí)現(xiàn)Ping遠(yuǎn)程主機(jī)功能,本教程將演示1.0.2版本更新功能,以及實(shí)現(xiàn)的具體代碼演示,需要的朋友可以參考下
    2024-05-05
  • 淺談C#中ListView類的用法

    淺談C#中ListView類的用法

    這篇文章主要介紹了淺談C#中ListView的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C#實(shí)現(xiàn)抓取和分析網(wǎng)頁類實(shí)例

    C#實(shí)現(xiàn)抓取和分析網(wǎng)頁類實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)抓取和分析網(wǎng)頁類,實(shí)例分析了C#抓取及分析網(wǎng)頁中文本及連接的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • C#調(diào)用第三方工具完成FTP操作

    C#調(diào)用第三方工具完成FTP操作

    這篇文章介紹了C#調(diào)用第三方工具完成FTP操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 使用C#實(shí)現(xiàn)寫入系統(tǒng)日志

    使用C#實(shí)現(xiàn)寫入系統(tǒng)日志

    本文給大家分享的是作者使用使用C#實(shí)現(xiàn)將軟件日志寫入系統(tǒng)日志中的方法,十分巧妙,有需要的小伙伴可以參考下
    2018-01-01
  • C#常用的字符串?dāng)U展方法匯總

    C#常用的字符串?dāng)U展方法匯總

    這篇文章主要介紹了C#常用的字符串?dāng)U展方法匯總,包括了常見的字符串操作與數(shù)據(jù)類型轉(zhuǎn)換等,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • oledb連接access數(shù)據(jù)庫示例

    oledb連接access數(shù)據(jù)庫示例

    本文為大家介紹一個(gè)oledb連接access數(shù)據(jù)庫的示例,代碼很簡(jiǎn)單,可以直接使用
    2014-01-01
  • C#實(shí)現(xiàn)Stripe支付的方法實(shí)踐

    C#實(shí)現(xiàn)Stripe支付的方法實(shí)踐

    本文主要介紹了C#實(shí)現(xiàn)Stripe支付的方法實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

枞阳县| 龙岩市| 舞阳县| 射洪县| 和平县| 四平市| 疏勒县| 宁乡县| 都安| 武宁县| 登封市| 中卫市| 伊春市| 元氏县| 封开县| 昌乐县| 白山市| 苍山县| 拉萨市| 米林县| 江北区| 盱眙县| 隆德县| 北宁市| 盘锦市| 芮城县| 星座| 平陆县| 海宁市| 玛沁县| 习水县| 陆河县| 凌源市| 庄河市| 密云县| 旬阳县| 囊谦县| 阳朔县| 澄迈县| 兰州市| 广东省|