C#中另闢蹊徑解決JSON / XML互轉的問題

最近在一個POC的項目中要用到JSON和XML的相互轉換, 雖然我知道不少類庫如JSON.NET具有這種功能, 可是我仍是另闢蹊徑的使用Spider Studio結合一個在線工具網站快速實現了這個功能. html

1. 打開Spider Studio, 加載頁面 http://www.utilities-online.info/xmltojson/json

2. 經過選擇頁面元素功能找到xml和json兩個輸入框以及兩個相互轉換的按鈕, 他們的ID分別爲: #json, #xml, #tojson, #toxml.ide

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. 經過一點小技巧提升性能測試

通過觀察發現這個網站打開比較慢, 可是一旦打開以後, 處理轉換仍是挺快的. 所以我決定只在最開始打開一次, 以後直接調用轉換功能就成了.網站

將代碼this

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

 

改爲spa

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

 

便可, 測試發現原來須要4s的加載過程如今秒出了 :)code

5. 將腳本編譯成DLL

6. 建立WinForm程序, 引入DLL

7. 運行起來的效果

 8. 和Spider Studio採集以及相關腳本編寫的其餘文章:

C#代碼獲取或設置Iframe中的HTML

示例 - C#腳本代碼採集搜狐NBA球員, 球隊和比賽實況

C#中利用JQuery實現視頻網站的縮略圖採集

API - 使用Default對象 - 基礎篇

示例 - 如何翻頁

示例 - 向百度說 Hello world! 並得到迴應.

Spider Studio 社區信息

相關文章
相關標籤/搜索