zoukankan      html  css  js  c++  java
  • Json.Net学习笔记(三) Json与Xml之间的转换

    Json.Net 支持 Json 与Xml之间的相互转换.

    转换规则:

     1.元素保持不变
     2.属性添加前缀@
     3.单个子文本结点直接作为元素结点的值,否则通过#text访问
     4.XML声明和处理指令以?为前缀
     5.字符数据(Character data)、注释、whitespace 和significate whitespace结点分别通过#cdata-section,#comment,#whitespace and #significate-whitespace 访问。
     6.同一级多个相同名字的结点作为一组,放到同一个集合中
     7.空元素为null

    using Newtonsoft.Json;

    测试:

    string xml = <?xml version=""1.0"" standalone=""no""?>
                                <root>
                                <person id=""1"">
                                <name>Alan</name>
                                <url>http://www.google.com</url>
                                </person>
                                <person id=""2"">
                                <name>Louis</name>
                                <url>http://www.yahoo.com</url>
                                </person>
                                Hello World
                                </root>";

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);

               //XML to JSON
                string jsonText = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.Indented);
                Console.WriteLine(jsonText);

    输出结果:

    {
      "?xml": {
        "@version": "1.0",
        "@standalone": "no"
      },
      "root": {
        "person": [
          {
            "@id": "1",
            "name": "Alan",
            "url": "http://www.google.com/"
          },
          {
            "@id": "2",
            "name": "Louis",
            "url": "http://www.yahoo.com/"
          }
        ],
        "#text": "\r\n                            Hello World\r\n                            "
      }
    }

     

                //JSON to XML

                XmlDocument docJson = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonText);
                Console.WriteLine(docJson.InnerXml);

  • 相关阅读:
    心跳机制
    有可能出现的中文乱码
    【学习】logger
    【开发效率】Chrome快捷键
    Unable to open debugger port (127.0.0.1:4184): java.net.SocketException "socket closed"
    将项目发布【2.用idea】
    将项目发布【1.用MobaXterm】
    basePath
    大文件上传如何做断点续传?
    JavaScript如何判断一个元素是否在可视区域中?
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/2251113.html
Copyright © 2011-2022 走看看