首先还是那句话,我不是大牛,这些只是简单的记录一下学习的过程,没有太多面向对象和设计模式的思维,只偏基础,不喜莫笑;个人观点如果有不足之处,还望多多指教!
导语:程序开发中往往涉及到各种数据源,所以就有那么一个问题对各种数据源怎么进行处理,并让他在自己的程序中自由遨游,一般移动应用很大的数据都放在网上,通过数据接口来调用所以就会有各种各样的格式,如常见的数据源html源码,xml数据,json,对于这些数据处理方法有很多种,你可以选择你喜欢的,接下来就分享一下我觉得简单的易用的!
html:这东西是做一个合格的小偷必须要会的,谁用谁知道
方法一:正则表达式处理字符串
优点:通用,强大
缺点:适用范围比较窄,简单的还行,复杂的只适合正则大牛和闲的没事干得把
配合工具:RegexTester
方法二:微软的Ie组件
SeacherTool.dll微软ie的解析内核这个原来用过几次总体来说还算强大在添加引用com组件里面有的
好长时用的了记不清了大家自己可以用下
缺点:net平台支持不算全面
优点:凑合勉强可以用用
方法三:java平台下 HTMLParser
介绍这个的资料挺多,大家做java的可以用很强大
方法四:HtmlAgilityPack.1.4.6html解析
推荐这个强大易用只是net 2.0-4.5 sl所有版本,sl for wp也支持更重要的事在winrt4.5下也有
winrt下没有xpath寻找了吧好像只支持按照id寻找
不过有这个就够了可以省你很多工夫
代码示例:
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作为互联网上轻量便捷的数据传输格式,越来越受到重视。但在服务器端编程过程中,我们常常希望能通过智能提示来提高编码效率。JSON
格式网上数据很疯狂,所以想从网上捞数据,那就好好分析下json吧
方法一:大家搜一搜把好像有两个c#里面提供了好几个序列化的类,来解析他们,我搜了半天用了不大好使 ,没达到我想要的效果
大家如果有兴趣就搜一下
方法二:我觉得这种方面快捷 适合快速开发:json.net
版本齐全好用:
代码很简单就不贴了 看看就会再附赠给大家俩个开源小工具把jsoN对象转化成c#model
http://jsonclassgenerator.codeplex.com/
还有一个没地址了给你json视图查看器让你方面查看json格式数据网站有在线的百度应用可以用
这东西也简单开了就会,
有了这些东西也许json数据可以让你操作自如了吧
接下来就是xml
xml不多说了大家都懂
xml我没有找什么东西个人感觉net的linq to xml就挺伟大!
接下来看代码,由于第一次调的时候别的地方出问题以为是linq查询除了问题所以就索性把linq语句给换成if for了
一样的思路linq内部也是这么实现的所以下面给出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; }