最近在一个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采集以及相关脚本编写的其余文章: