Json.Net学习笔记(三) Json与Xml之间的转换

本文介绍Json.Net库如何实现XML与JSON的相互转换,包括转换规则与具体示例。示例展示了如何将带有XML声明、多个同名节点及文本节点的XML文档转换为JSON格式,以及如何反向操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

转载于:https://www.cnblogs.com/aaa6818162/archive/2011/11/16/2251113.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值