win8/Metro开发系七 win8 对常见数据源的解析及处理 如:xml,json,以及html代码

首先还是那句话,我不是大牛,这些只是简单的记录一下学习的过程,没有太多面向对象和设计模式的思维,只偏基础,不喜莫笑;个人观点如果有不足之处,还望多多指教!

导语:程序开发中往往涉及到各种数据源,所以就有那么一个问题对各种数据源怎么进行处理,并让他在自己的程序中自由遨游,一般移动应用很大的数据都放在网上,通过数据接口来调用所以就会有各种各样的格式,如常见的数据源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寻找

不过有这个就够了可以省你很多工夫

代码示例:

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作为互联网上轻量便捷的数据传输格式,越来越受到重视。但在服务器端编程过程中,我们常常希望能通过智能提示来提高编码效率。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;
        }

 

 

 

posted @ 2012-11-04 13:09  ~星~  阅读(870)  评论(0编辑  收藏  举报