国产精品久久久久久久久久久新郎_91久久精品国产_国内精品久久久久久_欧美激情第一页在线观看_国产欧美日韩丝袜精品一区_日韩精品成人一区二区在线观看_国产精品v片在线观看不卡_91精品国产综合久久香蕉最新版 _国产精品亚洲激情_色综合男人天堂

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

XML數據讀取方式性能比較

發布時間:  2012/8/20 17:49:28

幾個月來,疑被SOA,一直在和xml操作打交道,SQL差不多又忘光了。現在已經知道,至少有四種常用人XML數據操作方式(好像java差不多),不過還沒有實際比較過這些方式各有哪些特點或優劣。正好看到網上也沒有這方面的實驗,偶來總結一下。

測試開始先讀取XML源,用一個比較大的rss文件鏈接,復制到項目bin/debug目錄下。

  1. Stream xmlStream = new MemoryStream(File.ReadAllBytes(path)); 

一、XmlDocument 方式

代碼 

  1. static IList testXmlDocument()   
  2. {   
  3. var doc = new XmlDocument();   
  4. doc.Load(xmlStream);   
  5. var nodeList = doc.DocumentElement.ChildNodes;   
  6. var lstChannel = new List<Object>(nodeList.Count );   
  7. foreach (XmlNode node in nodeList)   
  8. {   
  9. var channel = new 
  10. {  
  11. Title = node.SelectSingleNode("title").InnerText,  
  12. Link = node.SelectSingleNode("link").InnerText,  
  13. Description = node.SelectSingleNode("description").InnerText,  
  14. Content = node.SelectSingleNode("content").InnerText,  
  15. PubDate = node.SelectSingleNode("pubDate").InnerText,  
  16. Author = node.SelectSingleNode("author").InnerText,  
  17. Category = node.SelectSingleNode("category").InnerText  
  18. };  
  19. lstChannel.Add(channel);  
  20. }   
  21. return lstChannel;  
  22. }  

二、XPathNavigator 方式

代碼 

  1. static IList testXmlNavigator()   
  2. {   
  3. var doc = new XmlDocument();   
  4. doc.Load(xmlStream);    
  5. var nav = doc.CreateNavigator();   
  6. nav.MoveToRoot();   
  7. var nodeList = nav.Select("/channel/item");   
  8. var lstChannel = new List<Object>(nodeList.Count);   
  9. foreach (XPathNavigator node in nodeList)  
  10. {  
  11. var channel = new 
  12. {  
  13. Title = node.SelectSingleNode("title").Value,  
  14. Link = node.SelectSingleNode("link").Value,  
  15. Description = node.SelectSingleNode("description").Value,  
  16. Content = node.SelectSingleNode("content").Value,  
  17. PubDate = node.SelectSingleNode("pubDate").Value,  
  18. Author = node.SelectSingleNode("author").Value,  
  19. Category = node.SelectSingleNode("category").Value  
  20. };  
  21. lstChannel.Add(channel);  
  22. }  
  23. return lstChannel;  
  24. }  

三、XmlTextReader 方式

代碼 

  1. static List<Channel> testXmlReader()  
  2. {   
  3. var lstChannel = new List<Channel>();   
  4. var reader = XmlReader.Create(xmlStream);   
  5. while (reader.Read())   
  6.  {   
  7. if (reader.Name == "item" && reader.NodeType == XmlNodeType.Element)   
  8.  {  var channel = new Channel();  
  9. lstChannel.Add(channel);  
  10.  while (reader.Read())  
  11.  {  
  12.  if (reader.Name == "item") break;  
  13.  if (reader.NodeType != XmlNodeType.Element) continue;  
  14.  switch (reader.Name)  
  15.  {  
  16.  case "title":  
  17.  channel.Title = reader.ReadString();  
  18. break;  
  19. case "link":  
  20. channel.Link = reader.ReadString();  
  21. break;  
  22.  case "description":  
  23. channel.Description = reader.ReadString();  
  24. break;  
  25. case "content":  
  26. channel.Content = reader.ReadString();  
  27. break;  
  28.  case "pubDate":  
  29.  channel.PubDate = reader.ReadString();  
  30.  break;  
  31.  case "author":  
  32. channel.Author = reader.ReadString();  
  33.  break;  
  34. case "category":  
  35. channel.Category = reader.ReadString();  
  36.  break;  
  37. default:  
  38. break;  
  39. }}}}  
  40. return lstChannel;  
  41. }  

四、Linq to XML 方式

代碼 

  1. static IList testXmlLinq()  
  2. {   
  3. var xd = XDocument.Load(xmlStream);   
  4. var list = from node in xd.Elements("channel").Descendants("item")   
  5. select new   
  6. {   
  7. Title = node.Element("title").Value,   
  8. Link = node.Element("link").Value,   
  9. Description = node.Element("description").Value,  
  10. Content = node.Element("content").Value,  
  11. PubDate = node.Element("pubDate").Value,  
  12. Author = node.Element("author").Value,  
  13. Category = node.Element("category").Value  
  14. };  
  15. return list.ToList();  

測試結果:

XmlDocment 47ms 

XPathNavigator 42ms

XmlTextReader 23ms

Xml Linq 28ms

小結一下自己的認識,XmlDocument的操作基本按W3C的DOM操作方式,不過要將全部節點解析成對象加載到內存中,往往造成很大浪費。所以微軟自己的編程規范也不推薦用它。這里由于讀取了所有節點,可能因此性能和Navigator方式相差不大。在三種隨機讀取方式中,Xml Linq性能最高,只是方法名有點別扭。XmlTextReader方式是所謂的SAX,只讀向前,無疑性能最高,不過實現上麻煩了不少,要比較精確的控制訪問邏輯,也無法用匿名類存儲數據。

.Net 3.5發布Xml Linq可以很好地取代前兩種方式,通常情況下,最好用它。只有個別場合,如果對性能要求極高,或者讀取Xml數據量太大不能一下子下載或讀取到內存中,那就只好痛苦委身于XmlTextReader了。


本文出自:億恩科技【www.czbl888.cn】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    国产精品久久久久久久久久久新郎_91久久精品国产_国内精品久久久久久_欧美激情第一页在线观看_国产欧美日韩丝袜精品一区_日韩精品成人一区二区在线观看_国产精品v片在线观看不卡_91精品国产综合久久香蕉最新版 _国产精品亚洲激情_色综合男人天堂
    久久精品一二三四| 在线观看视频黄色| 欧美 另类 交| www.com污| 亚洲一区在线不卡| 成人一区二区三| 欧美女人性生活视频| 精品无码一区二区三区在线| 国产av熟女一区二区三区| 国产精品8888| 男人日女人的bb| 成人一级生活片| 黄页网站在线观看视频| 激情小视频网站| 僵尸世界大战2 在线播放| 久久国产精品网| 亚洲午夜无码av毛片久久| 18禁男女爽爽爽午夜网站免费| 欧美一区二区三区爽大粗免费| 少妇人妻无码专区视频| 人妻熟妇乱又伦精品视频| 成人免费观看视频在线观看| 国产精品99久久免费黑人人妻| 欧美日韩怡红院| 中文字幕免费高清在线| 超碰在线超碰在线| 高清无码一区二区在线观看吞精| 日韩极品视频在线观看| 欧美日韩中文在线视频| 手机看片一级片| 男插女免费视频| 日本福利视频一区| 动漫av免费观看| 色黄视频免费看| 国产九九九九九| 麻豆一区二区三区视频| 亚洲免费成人在线视频| 久久这里只有精品8| 99热成人精品热久久66| 国产免费中文字幕| 欧美成人精品免费| 欧美激情精品久久久久久小说| 九九九九九伊人| 免费看日b视频| 久久美女福利视频| 日本网站在线看| 亚洲人精品午夜射精日韩 | 日本aa在线观看| 哪个网站能看毛片| 欧美视频亚洲图片| 国产特级黄色大片| 8x8x成人免费视频| 黄色片网址在线观看| 在线免费观看av的网站| 日韩中文在线字幕| 欧美日韩在线不卡视频| 亚洲色图欧美自拍| 欧美日韩性生活片| 国产成人美女视频| 青青青国产在线观看| www.久久91| 97超碰人人澡| 特级黄色片视频| 日韩一级在线免费观看| 亚洲天堂第一区| 黄色三级视频片| av网站大全免费| 亚洲人视频在线| 国模无码视频一区二区三区| 永久免费黄色片| 粗暴91大变态调教| 成人av在线不卡| 欧美视频亚洲图片| 一本久道综合色婷婷五月| 亚洲高清av一区二区三区| 日本免费黄视频| 300部国产真实乱| 亚洲视频一二三四| 色诱视频在线观看| 成人网站免费观看入口| 久久久精品视频国产| 37pao成人国产永久免费视频| 老司机午夜免费福利视频| 九热视频在线观看| 国产精品无码av在线播放| 2025韩国大尺度电影| 成人午夜激情av| 成人性生活视频免费看| 手机看片日韩国产| 免费网站在线观看黄| 国产激情在线观看视频| 国产极品在线视频| a级免费在线观看| 蜜臀av.com| 亚洲成人手机在线观看| 无限资源日本好片| 欧美精品无码一区二区三区| 亚洲不卡中文字幕无码| 日本黄大片在线观看| 美女在线免费视频| www亚洲国产| 精品国产无码在线| 日本成人性视频| 四虎1515hh.com| 在线一区二区不卡| 中文字幕线观看| 国产aⅴ爽av久久久久| 一本岛在线视频| 91n.com在线观看| 国产又大又黄又粗的视频| 毛片一区二区三区四区| 欧美v在线观看| 干日本少妇首页| 成年人在线看片| 黄色三级视频片| 色悠悠久久综合网| 免费一区二区三区在线观看| 国产wwwxx| 精品亚洲视频在线| 97人人模人人爽人人澡| 色中文字幕在线观看| 日本美女久久久| 麻豆一区二区三区在线观看| 中文字幕第50页| 女人色极品影院| 日韩国产一级片| 免费高清在线观看免费| 激情网站五月天| 国产免费又粗又猛又爽| 一个色综合久久| 香蕉视频在线网址| 99re6这里有精品热视频| av网站大全免费| 免费高清在线观看免费| 色婷婷成人在线| 色撸撸在线观看| 欧美久久在线观看| 日日碰狠狠丁香久燥| 欧美日韩精品区别| 免费在线看黄色片| 成人精品视频一区二区| 九九热精品国产| 国产在线视频在线| 无码精品国产一区二区三区免费| 亚洲免费一级视频| 国产资源第一页| 99热成人精品热久久66| www.超碰97.com| 国产又粗又猛又爽又黄的网站| 国产日韩欧美精品在线观看| 动漫av免费观看| dy888午夜| 成人黄色片视频| 久久人人爽人人片| 日韩精品 欧美| 国产亚洲视频一区| 男女私大尺度视频| 亚洲欧美aaa| 国产精品www在线观看| 丁香婷婷激情网| 99re8这里只有精品| 欧美aⅴ在线观看| av在线免费看片| 91猫先生在线| 欧美aaa在线观看| 国产男女激情视频| 无码毛片aaa在线| 韩国一区二区av| 欧洲精品视频在线| 免费看污污网站| r级无码视频在线观看| 福利片一区二区三区| 黄色片网址在线观看| 一区二区久久精品| 精品无码一区二区三区在线| 中文 日韩 欧美| 欧美牲交a欧美牲交aⅴ免费真| 一级片免费在线观看视频| 成人在线看视频| www.激情网| 日本中文字幕二区| 波多野结衣50连登视频| 无颜之月在线看| 污污视频网站在线| 欧美 日韩精品| 成人免费观看在线| 中文字幕在线视频一区二区三区| 久久精品免费一区二区| 天天干天天色天天爽| 免费看涩涩视频| 成人一级片网站| 日本xxxxxxxxxx75| 善良的小姨在线| 国产九九热视频| 久久综合久久色| 黄色一级片播放| 日韩日韩日韩日韩日韩| 91九色国产ts另类人妖| www.久久av.com| 香蕉视频网站入口|