最近在一個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; } }
測試效果:性能
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採集以及相關腳本編寫的其餘文章: