• 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;
            }
  • 相关阅读:
    easyui源码翻译1.32--ValidateBox(验证框)
    easyui源码翻译1.32--TreeGrid(树形表格)
    easyui源码翻译1.32--Tree(树)
    easyui源码翻译1.32--TimeSpinner(时间微调)
    easyui源码翻译1.32--Tabs(选项卡)
    easyui源码翻译1.32--SplitButton(分割按钮)
    easyui源码翻译1.32--Slider(滑动条)
    easyui源码翻译1.32--SearchBox(搜索框)
    广度和深度-活在当下!
    IT人为了家庭和自己请保重自己~活在当下!
  • 原文地址:https://www.cnblogs.com/cxing/p/xingwin8ReadData.html
Copyright © 2020-2023  润新知