zoukankan      html  css  js  c++  java
  • C#中另辟蹊径解决JSON / XML互转的问题

    最近在一个POC的项目中要用到JSON和XML的相互转换, 虽然我知道很多类库如JSON.NET具备这种功能, 但是我还是另辟蹊径的使用Spider Studio结合一个在线工具网站快速实现了这个功能. 

    1. 打开Spider Studio, 加载页面 http://www.utilities-online.info/xmltojson/

    2. 通过选择页面元素功能找到xml和json两个输入框以及两个相互转换的按钮, 他们的ID分别为: #json, #xml, #tojson, #toxml.

    3. 编写脚本自动完成页面操作:

    public void Run()
    {
        Logger.ClearAll();
        Logger.Log(Xml2Json("<person><name>Mike</name><age>30</age></person>"));
        Logger.Log(Json2Xml("{'person':{'name':'Mike', 'age':30}}"));
    }
    
    public string Xml2Json(string xml)
    {
        lock(this)
        {
            Default.Navigate("http://www.utilities-online.info/xmltojson");
            Default.Ready();
            Default.SelectSingleNode("#xml").Text(xml);
            Default.SelectSingleNode("#tojson").Click();
            var json = Default.SelectSingleNode("#json").Text();
            return json;
        }
    }
    
    public string Json2Xml(string json)
    {
        lock(this)
        {
            Default.Navigate("http://www.utilities-online.info/xmltojson");
            Default.Ready();
            Default.SelectSingleNode("#json").Text(json);
            Default.SelectSingleNode("#toxml").Click();
            var xml = Default.SelectSingleNode("#xml").Text();
            return xml;
        }
    }
    View Code

    测试效果:

    4. 通过一点小技巧提高性能

    经过观察发现这个网站打开比较慢, 但是一旦打开之后, 处理转换还是挺快的. 因此我决定只在最开始打开一次, 之后直接调用转换功能就成了.

    将代码

    Default.Navigate("http://www.utilities-online.info/xmltojson");
    Default.Ready();

    改成

    if(Default.Url.ToString() != "http://www.utilities-online.info/xmltojson/")
    {
        Default.Navigate("http://www.utilities-online.info/xmltojson");
        Default.Ready();
    }

    即可, 测试发现原来需要4s的加载过程现在秒出了 :)

    5. 将脚本编译成DLL

    6. 创建WinForm程序, 引入DLL

    7. 运行起来的效果

     8. 和Spider Studio采集以及相关脚本编写的其他文章:

    C#代码获取或设置Iframe中的HTML

    示例 - C#脚本代码采集搜狐NBA球员, 球队和比赛实况

    C#中利用JQuery实现视频网站的缩略图采集

    API - 使用Default对象 - 基础篇

    示例 - 如何翻页

    示例 - 向百度说 Hello world! 并获得回应.

    Spider Studio 社区信息

  • 相关阅读:
    Day26
    Day25
    day24
    day22
    DAY21
    Day20
    Day19
    Day18
    Day17
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/iamzyf/p/3489859.html
Copyright © 2011-2022 走看看