zoukankan      html  css  js  c++  java
  • 2019-3-1-C#-json-转-xml-字符串

    title author date CreateTime categories
    C# json 转 xml 字符串
    lindexi
    2019-03-01 09:20:24 +0800
    2019-1-16 19:5:51 +0800
    C#

    本文告诉大家如何将 json 转 xml 或将 xml 转 json 字符串

    首先需要安装 Newtonsoft.Json 库,打开 VisualStudio 2019 新建一个 dotnet core 项目,然后右击编译 csproj 输入下面的代码

      <ItemGroup>
        <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
      </ItemGroup>

    尝试创建一个类用来转换为 xml 请看代码

        public class Foo
        {
            public string Name { get; set; }
    
            public string Blog { get; set; }
        }

    将类转换为 xml 的代码

                var foo = new Foo()
                {
                    Name = "lindexi",
                    Blog = "https://blog.csdn.net/lindexi_gd",
                };
    
                var xmlSerializer = new XmlSerializer(typeof(Foo));
                var str = new StringBuilder();
    
                xmlSerializer.Serialize(new StringWriter(str), foo);
    
                var xml = str.ToString();
                Console.WriteLine(xml);

    现在运行就可以看到下面代码

    <?xml version="1.0" encoding="utf-16"?>
    <Foo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>lindexi</Name>
      <Blog>https://blog.csdn.net/lindexi_gd</Blog>
    </Foo>
    

    这里的 encoding 是 utf-16 因为 StringWriter 使用的是 Unicode 如果需要修改为 utf-8 需要修改代码,但是本文就不在这里说

    xml 转 json 字符串

    从 xml 转 json 需要将 xml 字符串创建 XmlDocument 才可以

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

    通过下面代码就可以将 XmlDocument 转 json 字符串

                string text = JsonConvert.SerializeXmlNode(doc);

    运行代码可以看到转换的代码

    {"?xml":{"@version":"1.0","@encoding":"utf-16"},"Foo":{"@xmlns:xsd":"http://www.w3.org/2001/XMLSchema","@xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","Name":"lindexi","Blog":"https://blog.csdn.net/lindexi_gd"}}

    json 转 xml 字符串

    在上面已经转换出 json 可以通过下面代码将 json 转 xml 字符串

                doc = (XmlDocument) JsonConvert.DeserializeXmlNode(text);
    

    如果需要将 doc 做字符串输出,可以使用 doc.InnerXml 转字符串

                doc = (XmlDocument) JsonConvert.DeserializeXmlNode(text);
                Console.WriteLine("json转xml");
                Console.WriteLine(doc.InnerXml);

    运行软件可以看到下面代码

    <?xml version="1.0" encoding="utf-16"?><Foo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Name>lindexi</Name><Blog>https://blog.csdn.net/lindexi_gd</Blog></Foo>
    

    下面是全部的代码

       class Program
        {
            static void Main(string[] args)
            {
                var foo = new Foo()
                {
                    Name = "lindexi",
                    Blog = "https://blog.csdn.net/lindexi_gd",
                };
    
                var xmlSerializer = new XmlSerializer(typeof(Foo));
                var str = new StringBuilder();
    
                xmlSerializer.Serialize(new StringWriter(str), foo);
    
                var xml = str.ToString();
                Console.WriteLine(xml);
    
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
    
                string text = JsonConvert.SerializeXmlNode(doc);
                Console.WriteLine("转换json");
                Console.WriteLine(text);
    
                doc = (XmlDocument) JsonConvert.DeserializeXmlNode(text);
                Console.WriteLine("json转xml");
                Console.WriteLine(doc.InnerXml);
    
                Console.Read();
            }
        }
    
        public class Foo
        {
            public string Name { get; set; }
    
            public string Blog { get; set; }
        }

    运行可以看到下面方法

    <?xml version="1.0" encoding="utf-16"?>
    <Foo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>lindexi</Name>
      <Blog>https://blog.csdn.net/lindexi_gd</Blog>
    </Foo>
    转换json
    {"?xml":{"@version":"1.0","@encoding":"utf-16"},"Foo":{"@xmlns:xsd":"http://www.w3.org/2001/XMLSchema","@xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","Name":"lindexi","Blog":"https://blog.csdn.net/lindexi_gd"}}
    jsonxml
    <?xml version="1.0" encoding="utf-16"?><Foo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Name>lindexi</Name><Blog>https://blog.csdn.net/lindexi_gd</Blog></Foo>

    Converting between JSON and XML

    代码 https://gitee.com/lindexi/lindexi_gd/tree/dev/LapouRairpaltearwou

  • 相关阅读:
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    8.4 确定两个日期之间的月份数或年数
    (Java实现) 洛谷 P1553 数字反转(升级版)
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085462.html
Copyright © 2011-2022 走看看