win8/Metro开发系七 win8 对常见数据源的解析及处理 如:xml,json,以及html代码
首先還是那句話,我不是大牛,這些只是簡單的記錄一下學(xué)習(xí)的過程,沒有太多面向?qū)ο蠛驮O(shè)計(jì)模式的思維,只偏基礎(chǔ),不喜莫笑;個(gè)人觀點(diǎn)如果有不足之處,還望多多指教!
導(dǎo)語:程序開發(fā)中往往涉及到各種數(shù)據(jù)源,所以就有那么一個(gè)問題對(duì)各種數(shù)據(jù)源怎么進(jìn)行處理,并讓他在自己的程序中自由遨游,一般移動(dòng)應(yīng)用很大的數(shù)據(jù)都放在網(wǎng)上,通過數(shù)據(jù)接口來調(diào)用所以就會(huì)有各種各樣的格式,如常見的數(shù)據(jù)源html源碼,xml數(shù)據(jù),json,對(duì)于這些數(shù)據(jù)處理方法有很多種,你可以選擇你喜歡的,接下來就分享一下我覺得簡單的易用的!
html:這東西是做一個(gè)合格的小偷必須要會(huì)的,誰用誰知道
方法一:正則表達(dá)式處理字符串
優(yōu)點(diǎn):通用,強(qiáng)大
缺點(diǎn):適用范圍比較窄,簡單的還行,復(fù)雜的只適合正則大牛和閑的沒事干得把
配合工具:RegexTester
方法二:微軟的Ie組件
SeacherTool.dll微軟ie的解析內(nèi)核這個(gè)原來用過幾次總體來說還算強(qiáng)大在添加引用com組件里面有的
好長時(shí)用的了記不清了大家自己可以用下
缺點(diǎn):net平臺(tái)支持不算全面
優(yōu)點(diǎn):湊合勉強(qiáng)可以用用
方法三:java平臺(tái)下?HTMLParser
介紹這個(gè)的資料挺多,大家做java的可以用很強(qiáng)大
方法四:HtmlAgilityPack.1.4.6html解析
推薦這個(gè)強(qiáng)大易用只是net 2.0-4.5 sl所有版本,sl for wp也支持更重要的事在winrt4.5下也有
winrt下沒有xpath尋找了吧好像只支持按照id尋找
不過有這個(gè)就夠了可以省你很多工夫
代碼示例:
View Code HtmlAgilityPack.HtmlDocument htmlHelper = new HtmlAgilityPack.HtmlDocument();htmlHelper.LoadHtml(@htmlDoc);int i = 0;IEnumerable<HtmlAgilityPack.HtmlNode> m = htmlHelper.GetElementbyId("main").Elements("div");html的解析就介紹到這可能還有很多方法:大家探索可以一起交流下
2.json格式解析
son作為互聯(lián)網(wǎng)上輕量便捷的數(shù)據(jù)傳輸格式,越來越受到重視。但在服務(wù)器端編程過程中,我們常常希望能通過智能提示來提高編碼效率。JSON
格式網(wǎng)上數(shù)據(jù)很瘋狂,所以想從網(wǎng)上撈數(shù)據(jù),那就好好分析下json吧
方法一:大家搜一搜把好像有兩個(gè)c#里面提供了好幾個(gè)序列化的類,來解析他們,我搜了半天用了不大好使 ,沒達(dá)到我想要的效果
大家如果有興趣就搜一下
方法二:我覺得這種方面快捷 適合快速開發(fā):json.net
版本齊全好用:
代碼很簡單就不貼了 看看就會(huì)再附贈(zèng)給大家倆個(gè)開源小工具把jsoN對(duì)象轉(zhuǎn)化成c#model
http://jsonclassgenerator.codeplex.com/
還有一個(gè)沒地址了給你json視圖查看器讓你方面查看json格式數(shù)據(jù)網(wǎng)站有在線的百度應(yīng)用可以用
這東西也簡單開了就會(huì),
有了這些東西也許json數(shù)據(jù)可以讓你操作自如了吧
?
接下來就是xml
xml不多說了大家都懂
xml我沒有找什么東西個(gè)人感覺net的linq to xml就挺偉大!
接下來看代碼,由于第一次調(diào)的時(shí)候別的地方出問題以為是linq查詢除了問題所以就索性把linq語句給換成if for了
一樣的思路linq內(nèi)部也是這么實(shí)現(xiàn)的所以下面給出winRT下xml的讀取
簡單示例代碼:
public static async Task<XDocument> LoadXml(string sourceName){StorageFolder storageFolder = await Package.Current.InstalledLocation.GetFolderAsync("DataSources");StorageFile storageFile = await storageFolder.GetFileAsync(sourceName+".xml");XmlLoadSettings loadSettings = new XmlLoadSettings();loadSettings.ProhibitDtd = false;loadSettings.ResolveExternals = false;XmlDocument xmlDoc = await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);XDocument doc = XDocument.Parse(xmlDoc.GetXml());var ReturnTask = Task.Factory.StartNew(() => doc);return await ReturnTask;}/// <summary>取得朝代/// /// </summary>/// <param name="ReturnTasks"></param>public static List<t_dynastyModel> GetT_dynasty(XDocument ReturnTasks){List<t_dynastyModel> t_dynasty = new List<t_dynastyModel>();foreach (var item in ReturnTasks.Descendants("t_dynasty")){t_dynastyModel temp = new t_dynastyModel();temp.d_dynasty = item.Element("d_dynasty").Value;temp.d_intro = item.Element("d_intro").Value;temp.d_intro2 = item.Element("d_intro2").Value;temp.d_num = item.Element("d_num").Value;t_dynasty.Add(temp);}return t_dynasty;}?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/cxing/archive/2012/11/04/xingwin8ReadData.html
總結(jié)
以上是生活随笔為你收集整理的win8/Metro开发系七 win8 对常见数据源的解析及处理 如:xml,json,以及html代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乱谈数学--我理解的函数极限运算
- 下一篇: html5 本地存储Web Storag