精品日韩在线,日韩精品福利一区二区三区,日韩午夜黄色,国产日韩欧美高清免费

始創于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.zuiquanben.com】

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

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

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

     
     
    精品日韩在线,日韩精品福利一区二区三区,日韩午夜黄色,国产日韩欧美高清免费
    国产精品qvod| 国产精品天堂蜜av在线播放| 国产精品对白| 欧美一区二区三区久久精品| 亚洲另类黄色| 日韩精品国产精品| 日本va欧美va欧美va精品| 日韩一区二区三区四区五区| 日本在线不卡视频一二三区| 欧美日韩亚洲一区二区三区在线| 欧美影院精品| 日韩av电影一区| 欧美精品影院| 久久精品一本| 欧美三区四区| 欧美日韩国产免费观看视频| 日韩视频一区| 亚洲精品视频一二三区| 欧美日韩一区自拍| 毛片不卡一区二区| 9999国产精品| 美女网站一区| 亚洲色图网站| 国产精品一区二区三区www| 国产精品v亚洲精品v日韩精品| 美女尤物国产一区| 成人在线视频免费看| 日韩在线短视频| 亚洲在线观看| 国产无遮挡裸体免费久久| 精品久久一区| 国模 一区 二区 三区| 视频一区视频二区在线观看| 日本欧美一区| 超碰在线99| 九一国产精品| 日本不卡一区二区| 国产a亚洲精品| 国产一区二区中文| 日韩欧美中文在线观看| 福利视频一区| 欧美成人国产| 欧美日韩91| 999精品色在线播放| 亚洲精品美女| 亚洲黄色网址| 中文字幕一区二区三区四区久久| 国产极品模特精品一二| 久久久精品网| 日韩欧美中文字幕一区二区三区| 久久影视三级福利片| 在线日韩视频| 日韩欧美中文在线观看| 久久影院午夜精品| 蜜臀av国产精品久久久久 | 免费av一区二区三区四区| 日本 国产 欧美色综合| 狂野欧美性猛交xxxx| 免费国产自久久久久三四区久久| 日韩精品久久久久久| 天堂av在线| 日韩中出av| 91精品婷婷色在线观看| **爰片久久毛片| 国内精品99| 欧美成a人片免费观看久久五月天| 1024精品一区二区三区| 国产日韩高清一区二区三区在线 | 久久国产麻豆精品| 欧美影院三区| 久久a爱视频| 国产精品婷婷| 国产va免费精品观看精品视频| 香蕉久久久久久久av网站| 麻豆91在线播放| 麻豆精品91| 黑森林国产精品av| 日本欧美韩国一区三区| 九九综合九九| 国产成人a视频高清在线观看| 亚洲无线观看| 久久理论电影| 福利精品一区| 97se亚洲| 日韩影院精彩在线| 久久国产亚洲| 成人影视亚洲图片在线| 国产伦精品一区二区三区视频| 亚洲一卡久久| 亚洲精品国产嫩草在线观看 | 亚洲一级影院| 精品久久久中文字幕| 亚洲精品大片| 国产美女精品| 米奇777超碰欧美日韩亚洲| 久久久久久夜| 国产精品chinese| 最新亚洲国产| 国产毛片一区| 国产99久久| 吉吉日韩欧美| 精品亚洲成人| 日韩欧美中文字幕在线视频| 亚洲一区二区毛片| 欧美+日本+国产+在线a∨观看| 精品日韩一区| 精品在线网站观看| 久久的色偷偷| 国产精品v亚洲精品v日韩精品| 天堂av一区| 四虎在线精品| 亚洲免费毛片| 日韩中文字幕视频网| 亚洲我射av| 亚洲精品动态| 亚洲精品欧美| 最新国产精品视频| 久久亚洲美女| 日韩在线卡一卡二| 蜜臀91精品一区二区三区| 老鸭窝毛片一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲黄色在线| 丝瓜av网站精品一区二区 | 在线观看精品| 亚洲涩涩在线| 99久久激情| 亚洲欧美一区在线| 精品1区2区3区4区| 亚洲在线观看| 亚州国产精品| 日本亚洲最大的色成网站www| 亚洲bt欧美bt精品777| 日韩精品亚洲一区二区三区免费| 色综合视频一区二区三区日韩 | 欧美日韩尤物久久| 久久麻豆精品| 樱桃成人精品视频在线播放| 午夜精品免费| 日韩视频一区二区三区在线播放免费观看| 亚洲午夜一级| aa国产精品| 日韩一区二区三区在线看| 日韩超碰人人爽人人做人人添| 欧美一区自拍| 精品视频亚洲| 久久蜜桃精品| 视频一区视频二区中文字幕| 日本一区福利在线| 欧美国产中文高清| 午夜精品久久久久久久久久蜜桃| 久久久久久久久久久妇女| 亚洲欧洲一区| 日韩精品欧美大片| 国产精品mv在线观看| 日韩av在线播放网址| 激情欧美一区| 亚洲欧美专区| 国产精品久久久久毛片大屁完整版| 国产suv精品一区二区四区视频| 成人免费网站www网站高清| 亚洲中午字幕| 国产欧美69| 日韩精品影视| 免费成人在线观看| 麻豆精品蜜桃视频网站| 亚洲91久久| 日本v片在线高清不卡在线观看| 国产精品v日韩精品v欧美精品网站 | 日韩久久一区| 亚洲精品88| 久久国产免费| 国产日韩中文在线中文字幕 | 麻豆视频一区| 91看片一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产日韩免费| 久久久久国产精品一区三寸| 激情91久久| 欧美中文高清| 成人午夜国产| 久久精品国内一区二区三区水蜜桃| 国产亚洲电影| 群体交乱之放荡娇妻一区二区| 久久大逼视频| 精品国产一区二区三区性色av| 久久要要av| 国产亚洲精品美女久久| 中文另类视频| 欧美日韩中文| 欧美 日韩 国产一区二区在线视频| 日本午夜精品久久久| 日本免费久久| 亚洲麻豆一区| а√天堂中文在线资源8| 人人爽香蕉精品| 成人片免费看| 国产欧美一区二区三区米奇| 激情综合亚洲| 美女性感视频久久|