亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#讀取XML的三種實現方式

2019-10-29 21:14:02
字體:
來源:轉載
供稿:網友

前言

XML文件是一種常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,還有許多重要的場所都有它的身影。(類似還有Json)微軟也提供了一系列類庫來倒幫助我們在應用程序中存儲XML文件

在程序中訪問進而操作XML文件一般有兩種模型:

DOM(文檔對象模型):使用DOM的好處在于它允許編輯和更新XML文檔,可以隨機訪問文檔中的數據,可以使用XPath查詢,但是,DOM的缺點在于它需要一次性的加載整個文檔到內存中,對于大型的文檔,這會造成資源問題。

流模型:流模型很好的解決了這個問題,因為它對XML文件的訪問采用的是流的概念,也就是說,任何時候在內存中只有當前節點,但它也有它的不足,它是只讀的,僅向前的,不能在文檔中執行向后導航操作。

C#中三種讀取XML文件方法如下:

1.使用 XmlDocument(DOM模式)

2.使用 XmlTextReader(流模式)

3.使用 Linq to Xml(Linq模式)

使用XmlDocument方式讀取

使用XmlDocument是一種基于文檔結構模型的方式來讀取XML文件.在XML文件中,我們可以把XML看作是由文檔聲明(Declare),元素(Element),屬性(Attribute),文本(Text)等構成的一個樹.最開始的一個結點叫作根結點,每個結點都可以有自己的子結點.得到一個結點后,可以通過一系列屬性或方法得到這個結點的值或其它的一些屬性.例如:

xn 代表一個結點xn.Name;//這個結點的名稱xn.Value;//這個結點的值xn.ChildNodes;//這個結點的所有子結點xn.ParentNode;//這個結點的父結點

讀取所有數據

使用的時候,首先聲明一個XmlDocument對象,然后調用Load方法,從指定的路徑加載XML文件.

BookModel是圖書模型

#region XmlDocument讀取public static void XmlDocumentReadDemo(){  //list  List<BookModel> bookModeList = new List<BookModel>();  //使用的時候,首先聲明一個XmlDocument對象,然后調用Load方法,從指定的路徑加載XML文件.  XmlDocument doc = new XmlDocument();  XmlReaderSettings settings = new XmlReaderSettings();  settings.IgnoreComments = true;//忽略文檔里面的注釋  using (XmlReader reader = XmlReader.Create(@"d:/demo.xml", settings))  {    doc.Load(reader);    //doc.Load(@"d:/demo.xml");    //然后可以通過調用SelectSingleNode得到指定的結點,通過GetAttribute得到具體的屬性值.參看下面的代碼    // 得到根節點bookstore    XmlNode xn = doc.SelectSingleNode("bookstore");    // 得到根節點的所有子節點    XmlNodeList xnl = xn.ChildNodes;    foreach (XmlNode xn1 in xnl)    {      BookModel bookModel = new BookModel();      // 將節點轉換為元素,便于得到節點的屬性值      XmlElement xe = (XmlElement)xn1;      // 得到Type和ISBN兩個屬性的屬性值      bookModel.BookISBN = xe.GetAttribute("ISBN").ToString();      bookModel.BookType = xe.GetAttribute("Type").ToString();      // 得到Book節點的所有子節點      XmlNodeList xnl0 = xe.ChildNodes;      bookModel.BookName = xnl0.Item(0).InnerText;      bookModel.BookAuthor = xnl0.Item(1).InnerText;      bookModel.BookPrice = Convert.ToDouble(xnl0.Item(2).InnerText);      bookModeList.Add(bookModel);    }  }  bookModeList.Add(new BookModel());}#endregion XmlDocument讀取

運行結果如下:

 c#,讀取xml文件,讀取xml,讀取xml三種方式

 使用XmlTextReader方式讀取

使用XmlTextReader讀取數據的時候,首先創建一個流,然后用read()方法來不斷的向下讀,根據讀取的結點的類型來進行相應的操作.如下:

#region XmlTextReaderDemopublic static void XmlTextReaderDemo(){  XmlTextReader reader = new XmlTextReader(@"d:/demo.xml");  List<BookModel> modelList = new List<BookModel>();  BookModel model = new BookModel();  while (reader.Read())  {    if (reader.NodeType == XmlNodeType.Element)    {      if (reader.Name == "book")      {        model.BookType = reader.GetAttribute("Type");        model.BookISBN = reader.GetAttribute("ISBN");      }      if (reader.Name == "title")      {        model.BookName = reader.ReadElementContentAsString();      }      if (reader.Name == "author")      {        model.BookAuthor = reader.ReadElementString().Trim();      }      if (reader.Name == "price")      {        model.BookPrice = Convert.ToDouble(reader.ReadElementString().Trim());      }      //for(int i=0;i<reader.AttributeCount;i++)      //{      //  reader.MoveToAttribute(i);      //}    }    if (reader.NodeType == XmlNodeType.EndElement)    {      modelList.Add(model);      model = new BookModel();    }  }  reader.Close();  modelList.Add(new BookModel());}#endregion XmlTextReaderDemo

 使用 Linq to Xml讀取

Linq是C#3.0中出現的一個新特性,使用它可以方便的操作許多數據源,也包括XML文件.使用Linq操作XML文件非常的方便,而且也比較簡單。

必須引用using System.Linq;using System.Xml.Linq;

#region 讀取所有的數據XElement xe = XElement.Load(@"d:/demoLinq.xml");//xe.Descendantsvar elements = from ele in xe.Elements()        select ele;List<BookModel> modelList = new List<BookModel>();foreach (var ele in elements){  BookModel model = new BookModel();  model.BookAuthor = ele.Element("author").Value;  model.BookName = ele.Element("title").Value;  model.BookPrice = Convert.ToDouble(ele.Element("price").Value);  model.BookISBN = ele.Attribute("ISBN").Value;  model.BookType = ele.Attribute("Type").Value;  modelList.Add(model);}modelList.Add(new BookModel());#endregion 讀取所有的數據

 總結

1.XmlDocument方法優點是便于查找

2.XmlTextReader方法是流讀取內存暫用少

3.Linq to Xml 最新方法也是推薦方法,代碼少易于理解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲一区二区三区| 日本精品久久中文字幕佐佐木| 久久久亚洲国产天美传媒修理工| 亚洲视频在线免费观看| 日韩美女免费线视频| 51精品国产黑色丝袜高跟鞋| 国产精品大片wwwwww| 91久久在线视频| 91精品国产乱码久久久久久久久| 国产视频观看一区| 欧美激情亚洲国产| 欧美理论电影在线观看| 欧美电影在线观看高清| 在线观看欧美日韩| 成人网在线免费观看| 91成人免费观看网站| 亚洲综合大片69999| 91在线直播亚洲| 91精品国产91久久久久福利| 欧美性xxxxxxx| 91大神在线播放精品| 国产97色在线|日韩| 亚洲一区二区三区久久| 久久精品视频在线观看| 亚洲精品久久久久中文字幕二区| 中文字幕日韩欧美| 爽爽爽爽爽爽爽成人免费观看| 欧美激情一区二区三级高清视频| 国产亚洲欧美另类中文| 精品国产美女在线| 亚洲欧洲高清在线| 精品日韩美女的视频高清| 国产黑人绿帽在线第一区| 久久久久久久影院| 亚洲xxxx妇黄裸体| 91精品国产91久久久久| 国产精品成人免费电影| 亚洲视频在线观看| 日本精品一区二区三区在线播放视频| 狠狠爱在线视频一区| 国产精品成av人在线视午夜片| 国产精品视频26uuu| 亚洲午夜精品久久久久久久久久久久| 国产精品福利无圣光在线一区| 这里只有视频精品| 丁香五六月婷婷久久激情| 欧洲精品毛片网站| 青青草国产精品一区二区| 久久色免费在线视频| 亚洲国产精品va在线观看黑人| 亚洲另类欧美自拍| 欧美疯狂xxxx大交乱88av| 久久久久久91香蕉国产| 51ⅴ精品国产91久久久久久| 久久精品国产一区二区电影| 亚洲色图色老头| 91在线|亚洲| 国产精品96久久久久久又黄又硬| 日韩人体视频一二区| 国产成人精品免高潮在线观看| 欧美在线观看日本一区| 欧美裸体视频网站| 97免费在线视频| 欧美在线免费视频| 韩国国内大量揄拍精品视频| 中文字幕免费精品一区高清| 欧美一级高清免费播放| 久青草国产97香蕉在线视频| 中文字幕在线观看日韩| 欧美成人网在线| 超碰97人人做人人爱少妇| 992tv成人免费视频| 久久久久日韩精品久久久男男| 黄色一区二区三区| 不卡av在线播放| 午夜精品久久久久久久久久久久| 亚洲国产婷婷香蕉久久久久久| 久久久久久免费精品| 亚洲日韩欧美视频一区| 色播久久人人爽人人爽人人片视av| 国产精品99蜜臀久久不卡二区| 91在线免费视频| 亚洲乱亚洲乱妇无码| 欧美精品久久久久久久免费观看| 国产精品麻豆va在线播放| 亚洲三级av在线| 91丝袜美腿美女视频网站| 91精品综合视频| 国产精品2018| 国产午夜精品视频免费不卡69堂| 97在线观看视频| 久久久久久久爱| 7777精品视频| 日本高清久久天堂| 91在线观看免费高清| 日韩视频免费观看| 欧美午夜电影在线| 日韩在线播放一区| 亚洲精选一区二区| 91国产美女视频| 色综合久久中文字幕综合网小说| 69av成年福利视频| 欧美性在线观看| 亚洲欧美日韩精品| 欧美性videos高清精品| 精品夜色国产国偷在线| 国内精品久久影院| 日韩美女福利视频| 国产日韩欧美综合| 成人激情在线播放| 欧美肥老太性生活视频| 国产精品久久久久久久久影视| 久99久在线视频| 成人激情视频在线观看| 欧美大片在线看免费观看| 日韩中文字幕在线| 久久久久久久999精品视频| 日本免费一区二区三区视频观看| 欧美大尺度电影在线观看| 中文字幕久久亚洲| 国产suv精品一区二区| 啪一啪鲁一鲁2019在线视频| 亚洲欧美日韩网| 欧美裸体xxxx| 中文字幕国产精品久久| 久久69精品久久久久久久电影好| 97欧美精品一区二区三区| 亚洲国产欧美在线成人app| 91av视频在线播放| 一本色道久久88亚洲综合88| 欧美成人午夜剧场免费观看| 久久精品国产亚洲精品| 成人羞羞国产免费| 国产成人免费av电影| 午夜精品一区二区三区在线播放| 亚洲人高潮女人毛茸茸| 成人xxxx视频| 久久久精品2019中文字幕神马| 一区二区三区无码高清视频| 久久精品一本久久99精品| 成人在线免费观看视视频| 91精品在线看| 国语自产在线不卡| 欧美成人一二三| 亚洲国产精品专区久久| 欧美网站在线观看| 国产小视频91| 欧美国产日本在线| 国产精品嫩草影院久久久| 国产免费一区视频观看免费| 国产91精品久| 日本精品免费观看| 国产视频精品久久久| 国语自产在线不卡| 成人av资源在线播放| 国产男人精品视频| 日韩电视剧免费观看网站| 欧美电影免费观看网站| 欧美理论电影在线播放| 亚洲免费小视频| 欧美亚洲在线视频| 成人高h视频在线| 视频一区视频二区国产精品| 国产激情999|