使用JsonConvert.SerializeXmlNode时需注意的问题

在项目中遇到了几个的关于XML与JSON互相转化的小问题,特总结如下:

  1. 解析出来的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);
    首先关于xml文件解析成JSON文件后,所有JSON节点前均带有@符号,只有一种情况会出现这种情况,即XML文件的格式为如下格式时才会出现:示例代码如下:

     
     这样的XML文件使用如上转JSON的方法序列化之后,所有属性均带有@符号,如果XML定义的格式如下,则不会出现@符号,示例代码如下:

     
    张三
    至今无法找到解决方案,希望大神看到之后,能给出解决方案,我采用了一种极端的处理方式,即使用正则表达式替换,自我感觉这种方式欠妥,代码如下:
     
    string jsonText = Regex.Replace(JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None), "(?<=\")(@)(?!.*\":\\s )", string.Empty, RegexOptions.IgnoreCase);
  2. 关于XML父亲节点下只有一个子节点,采用如上方法进行JSON序列化后,XML子节点并未被序列化为数组,而是一个对象
    在网上百度之后,看到大神的解决方案,即在XML文件的头部增加如下节点:

     
    xmlns:json='http://james.newtonking.com/projects/json'
    然后针对只有一个子节点的xml节点进行单独出路,均增加json:Array="true"属性即可,代码如下:
     
    
        
    

你可能感兴趣的:(Json随笔)