C#中另辟蹊径解决JSON / XML互转的问题
最近在一个POC的项目中要用到JSON和XML的相互转换, 虽然我知道很多类库如JSON.NET具备这种功能, 但是我还是另辟蹊径的使用Spider Studio结合一个在线工具网站快速实现了这个功能.
- 在线工具网站: http://www.utilities-online.info/xmltojson
- 必备工具: Spider Studio (采集工作站): http://www.gdtsearch.com/products.spiderstudio.htm
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; } }
测试效果:
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采集以及相关脚本编写的其他文章: