a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創于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.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!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小時客服服務熱線

     
     
    夜夜高潮夜夜爽夜夜爱爱| 后入内射无码人妻一区| 亚洲情综合五月天| 日韩精品人妻系列无码AV东京| 精品人妻无码一区二| 成人AV无码乱码在线观看无码| 亚洲精品无码久久一线| 日本亚洲欧美一区二区麻豆| 久久精品国产99精品亚洲| 俄罗斯卖CSGO的网站免费进入| 一区二区中文字幕最近第九页| 偷炮少妇宾馆半推半就激情| 男人J桶进女人P无遮挡全过程 | 久久夜色精品国产噜噜麻豆| 国产成人无码免费视频79| 2021国产手机在线精品| 亚洲AV乱码VA国产AV22| 青草伊人久久综在合线亚洲观看| 精品国产第一国产综合精品| 成人一区二区不卡久久久| 一区三区四区产品乱码| 无码专区无码专区视频网址| 欧美在线观看免费做受视频| 精品影片在线观看的网站| 国产AV无码区亚洲| 2021国内精品久久久久免费| 亚洲AV中文无码乱人伦APP| 日本强伦姧人妻久久影片| 久久午夜夜伦鲁鲁片免费无码影视| 国产精品成人永久在线四虎| ASSPICS亚洲美女裸体CH| 亚洲精品无码久久久久牙蜜区| 色哟哟网站在线观看| 蜜桃久久久久久精品免费观看| 国产专区国产AV| 成人国产精品一区二区视频| 岳今晚让我玩个够肥水一体探岳体| 性色AⅤ一二三天美传媒| 日本少妇高潮喷水XXXXXXX| 巨胸喷奶水视频WWW免费动漫| 国产熟女真实乱精品视频| 被黑人伦流澡到高潮HNP动漫 | 亚洲精品无码不卡| 四川绿帽人妻51分钟在线| 男生坤坤放在女生坤坤叫什么| 精品动漫一区二区无遮挡| 国产AV无码专区亚洲AV人妖| Chinese国产HD精品实拍| 亚洲综合成人AⅤ在线网站| 小蜜被两老头吸奶头| 日韩成人无码一区二区三区| 蜜臀少妇人妻在线| 精品人妻潮喷久久久又裸又黄| 国产精品成人AV片免费看| 被黑人猛男连续高潮视频| 中文无码乱人伦中文视频播放| 亚洲国产成人久久一区二区三区| 农民人伦一区二区三区| 精品一区二区无码免费| 国产精品无码一区二区三区在| 本道久久综合无码中文字幕| 中文无码AV电影在线观看网站| 亚洲精品乱码久久久久久V| 无码国产精品一区二区免费模式| 人人妻人人超人人| 蜜臀av无码少妇一区二区三区| 狠狠躁夜夜躁无码中文字幕| 国产大学生酒店在线播放| ワンピースのエロ官网| 中年国产丰满熟女乱子正在播放| 亚洲国产精品久久久久秋霞1| 无码99久热只有精品视频在线观| 人妻无码一区二区三区TV| 蜜臀AV无码人妻精品| 精品久久久中文字幕人妻 | 韩国善良的小峓子在钱| 国产V精品成人免费视频| Y1111111少妇影院| 中文字幕亚洲欧美专区| 亚洲日韩精品一区二区三区 | 美国一面亲上边一面膜下边| 精品国产欧美一区二区| 国产精品一区二区AV麻豆| 丁香花在线电影小说观看| CAOPORN国产精品免费| 岳丰满多毛的大隂户老太的介绍| 亚洲成AV人最新地堂无码| 无码国产精品一区二区免费式直播 | 国产成人啪精品视频免费网站软件| CHINESE宅妇内射AV| 一米八五插一米六可以吗| 亚洲成A人片在线观看国产| 无码AV高潮喷水无码专区线| 日韩视频在线观看| 欧美无MATE30PRO巨| 美女直播全婐APP免费| 精品一区二区三区国产在线观看| 国产一区二区三区导航| 国产AⅤ精品一区二区久久| 办公丝袜AV一区二区三区| 中日双语字幕高清在线观看| 亚洲日韩精品无码AV海量| 亚洲AV永久无码精品一区| 午夜亚洲乱码伦小说区69堂| 十八禁无码精品A∨在线观看| 人妻系列无码专区久久五月天| 男阳茎进女阳道啪啪| 久久婷婷五月综合色区| 精品一卡二卡≡卡四卡日产乱码| 国语高潮无遮挡无码免费看| 国产乱人伦偷精品视频下| 国产AⅤ爽AV久久久久成| 成熟老年妇女毛茸茸| 波多野结衣高清一区二区三区| CAOPOREN免费精品视频| 7723影视大全在线观看| 中文字幕无码家庭乱欲| 在线天堂中文最新版| 一本之道无码一区二区| 亚洲色欲久久久综合网东京热 | 蜜桃人妻无码AⅤ中文字幕| 久久久久久精品免费免费69| 精品国产一区二区三区久久久狼| 国产曰的好深好爽免费视频| 国产精品无码A∨麻豆| 国产成人AV性色在线影院色戒 | 日韩精品无码人妻免费视频| 人妻 中文 无码 JAVHD| 欧美精产国品一二三区别| 牛和人交VIDEOS欧美3D| 免费看又黄又无码的网站| 老师趴讲台屁股撅起来作文| 久久精品人妻一区二区三区av | 中文亚洲AV片在线观看无码 | 乱子伦熟睡亚洲1区| 久久婷婷六月综合色液啪 | 野花影视大全在线西瓜在线播放| 亚洲欧洲∨国产一区二区三区 | 精东传媒VS天美传媒| 狠狠躁夜夜躁人人爽碰AV | 亚洲成A人片在线不卡一二三区| 亚洲AV永久无码精品网站在线观| 亚洲AV日韩AV无码AV| 亚洲AV色香蕉一区二区| 午夜无码乱码在线观看| 五十路○の豊満な肉体| 无码精品人妻一区二区三区在线| 完整版免费AV片| 无码精品人成人片在线观看| 无码精品人妻一区二区三区ap| 我和大佬的365天| 无码少妇一区二区浪潮AV| 午夜福利理论片高清在线观看| 小雪要撑破了黑人好大| 性中国妓女毛茸茸视频| 亚洲AV无码二区一区二十六区| 亚洲AV之男人的天堂| 亚洲国产精品久久久久秋霞小 | 岳丰满多毛的大隂户| 中国WINDOWS野外| 中文字幕久久精品无码| 18禁美女裸体爆乳无遮挡动图| 20岁小伙GAYGAYXⅩX| 2021av在线视频| av一区二区三区| 八戒八戒神马2021| 成熟丰满女人丰满妇女aⅴ | 亚洲熟妇成人精品一区| 野花视频大全高清免费 | 97人人超碰国产精品最新o| AV免费啪啪永久| 啊轻点灬太粗嗯太深了用力| 波多野结衣办公室激情30分钟| 敌伦交换第21部分剧情介绍| 公交车后车座的疯狂的做| 国产成人AV大片大片在线播放| 国产精品无码一区二区在线观一 | 国产AV无码精品色午夜| 国产精品久久久天天影视| 国产午夜精品一区二区三区软件 | 久久婷婷综合色丁香五月| 老妇人高清在线观看免费版| 免费无遮挡色视频网站| 欧美乱大交XXXXX性喷潮| 人人模人人爽人人喊久久| 日韩无码视频一区二区三区四区| 少妇太爽丰满一区二区| 无码人妻AⅤ一区二区三区水密桃| 性欧美丰满熟妇XXXX性久久久| 亚洲成AV人片在线观看无码不卡| 亚洲色成人网站WWW永久小说| 用嘴巴吃鸡的好处| 99久久久精品免费观看国产| 波多野结衣50连登视频| 夫妻之间的100种插秧法| 国产精品老熟女露脸视频| 韩日综合成人中文字幕| 久久精品国产精品国产一区| 蜜桃视频一区二区| 欧美人和黑人牲交网站上线|