在项目中遇到了几个的关于XML与JSON互相转化的小问题,特总结如下:
- 解析出来的JSON字符串全都带@符号
先贴一段代码,如下为xml文件转JSON字符串的代码:
string path = HostingEnvironment.MapPath(string.Format("~/App_Data/Kendoui/{0}.xml", fileName)); XmlDocument doc = new XmlDocument(); doc=doc.Load(path); string jsonText=JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None);
<item name="display" cname="是否可见" viewType="select" summary="" defaultValue="block" currentValue="block" />
<name>张三</name>
string jsonText = Regex.Replace(JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None), "(?<=\")(@)(?!.*\":\\s )", string.Empty, RegexOptions.IgnoreCase);
- 关于XML父亲节点下只有一个子节点,采用如上方法进行JSON序列化后,XML子节点并未被序列化为数组,而是一个对象
在网上百度之后,看到大神的解决方案,即在XML文件的头部增加如下节点:
xmlns:json='http://james.newtonking.com/projects/json'
<ControlItem xmlns:json='http://james.newtonking.com/projects/json' > <item json:Array="true" visible="" name="altRowTemplate" cname="行交替模板" viewType="textArea"/> </ControlItem>