老司机91精品网站在线观看-老司机67194免费观看-老司国产精品视频-老熟人老女人国产老太-中文字幕日本在线-中文字幕日本一区久久

始創于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.ypdoo.com.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小時客服服務熱線

     
     
    国产网站免费观看| 国产精品免费久久| 一级女性全黄久久生活片| 午夜激情视频在线观看 | 国产麻豆精品hdvideoss| 免费一级生活片| 青青青草影院 | 999精品影视在线观看| 日韩免费在线观看视频| 精品在线观看一区| 黄视频网站免费看| 精品毛片视频| 香蕉视频三级| 日本免费看视频| 日日夜夜婷婷| 国产91精品一区| 深夜做爰性大片中文| 精品久久久久久免费影院| 久久国产精品永久免费网站| 久久精品欧美一区二区| 日本伦理片网站| 欧美日本二区| 欧美爱色| 国产综合91天堂亚洲国产| 国产网站免费视频| 91麻豆爱豆果冻天美星空| 成人a级高清视频在线观看| 欧美激情一区二区三区视频高清 | 精品国产亚洲人成在线| 夜夜操网| 欧美大片aaaa一级毛片| 国产一区精品| 毛片高清| 97视频免费在线观看| 久久精品成人一区二区三区| 国产欧美精品午夜在线播放| 午夜家庭影院| 九九久久国产精品| 精品国产亚洲人成在线| 一级毛片视频播放| 久久精品欧美一区二区| 国产精品1024永久免费视频| 99热视热频这里只有精品| 国产一级生活片| 精品国产一区二区三区久久久蜜臀| 国产成人精品影视| 人人干人人草| 日韩在线观看免费| 麻豆系列 在线视频| 国产亚洲男人的天堂在线观看| 深夜做爰性大片中文| 99热视热频这里只有精品| 成人免费一级毛片在线播放视频| 欧美激情伊人| 91麻豆精品国产高清在线| 亚欧乱色一区二区三区| 九九免费精品视频| 久久成人综合网| 成人影视在线观看| 可以免费看毛片的网站| 日日爽天天| 在线观看成人网| 国产精品免费久久| 日本免费乱人伦在线观看| 久久99中文字幕久久| 精品视频一区二区| 亚洲第一页色| 亚洲www美色| 欧美电影免费| 日日爽天天| 黄色福利片| 久久国产精品永久免费网站| 青青久久国产成人免费网站| 久久精品免视看国产成人2021| 午夜在线亚洲| 日韩专区在线播放| 免费毛片基地| 久久国产影视免费精品| 香蕉视频久久| 91麻豆国产级在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 九九久久国产精品| 四虎影视久久| 午夜精品国产自在现线拍| 九九干| 国产原创中文字幕| 中文字幕一区二区三区精彩视频| 香蕉视频一级| 日韩av片免费播放| 91麻豆爱豆果冻天美星空| 午夜欧美成人香蕉剧场| 亚洲 激情| 久草免费在线视频| 亚洲天堂免费观看| 欧美日本免费| 欧美大片一区| 精品视频一区二区| 欧美大片毛片aaa免费看| 国产不卡高清在线观看视频| 精品久久久久久中文| 国产伦理精品| 成人影视在线观看| 青青久久国产成人免费网站| 可以免费在线看黄的网站| 国产网站在线| 九九热国产视频| 日本免费乱人伦在线观看| 国产一区二区精品久久| 日本伦理黄色大片在线观看网站| 一级女人毛片人一女人| 国产a视频精品免费观看| 九九久久99| 久久国产精品只做精品| 久久99这里只有精品国产| 国产网站在线| 国产不卡高清在线观看视频| 99久久精品国产国产毛片| 国产一区二区精品久久91| 久久久久久久免费视频| 欧美另类videosbestsex高清| 国产成人啪精品| 欧美爱色| 一级毛片视频播放| 日韩专区亚洲综合久久| 999久久久免费精品国产牛牛| 久久国产精品自线拍免费| 一级毛片视频免费| 一级毛片视频播放| 99久久视频| 亚欧乱色一区二区三区| 欧美国产日韩久久久| 日韩在线观看视频网站| 免费国产一级特黄aa大片在线| 成人av在线播放| 亚洲女初尝黑人巨高清在线观看| 国产高清在线精品一区a| 欧美激情一区二区三区中文字幕| 久久精品成人一区二区三区| 亚欧视频在线| 成人免费一级纶理片| 四虎久久精品国产| 成人免费观看的视频黄页| a级精品九九九大片免费看| 毛片电影网| 亚洲第一页乱| 国产精品免费久久| 国产91丝袜高跟系列| 高清一级片| 国产网站在线| 亚洲精品永久一区| 91麻豆国产级在线| 国产不卡福利| 香蕉视频一级| 色综合久久天天综合观看| 亚洲 欧美 成人日韩| 日本免费乱理伦片在线观看2018| 成人av在线播放| 国产视频一区二区在线播放| a级毛片免费观看网站| 成人高清视频在线观看| 国产伦久视频免费观看视频| 日韩欧美一二三区| 久久精品免视看国产成人2021| 天天色成人| 国产亚洲精品成人a在线| 久久久成人影院| 青青青草影院| 欧美激情一区二区三区视频高清 | 91麻豆精品国产高清在线| 999久久久免费精品国产牛牛| 日韩中文字幕在线观看视频| 黄视频网站免费看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品久久久久久免费影院| 美女免费黄网站| 亚久久伊人精品青青草原2020| 国产一级生活片| 91麻豆精品国产片在线观看| 日韩男人天堂| 99热精品在线| 成人高清视频免费观看| 欧美α片无限看在线观看免费| 精品视频一区二区三区| 日本伦理片网站| 国产综合成人观看在线| 免费一级片在线观看| 欧美另类videosbestsex久久| 青青久久精品| 国产网站在线| 成人a大片高清在线观看| 九九久久国产精品大片| 成人免费观看男女羞羞视频| 成人免费网站久久久| 欧美国产日韩久久久| 国产a视频| 久久福利影视| 国产高清在线精品一区二区| 毛片成人永久免费视频| 国产伦理精品| 欧美1区|