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

    本文告诉大家如何将 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"}}
    json转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>
    

    Converting between JSON and XML

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

    我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

    如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

  • 相关阅读:
    LOJ 6089 小Y的背包计数问题 —— 前缀和优化DP
    洛谷 P1969 积木大赛 —— 水题
    洛谷 P1965 转圈游戏 —— 快速幂
    洛谷 P1970 花匠 —— DP
    洛谷 P1966 火柴排队 —— 思路
    51Nod 1450 闯关游戏 —— 期望DP
    洛谷 P2312 & bzoj 3751 解方程 —— 取模
    洛谷 P1351 联合权值 —— 树形DP
    NOIP2007 树网的核
    平面最近点对(加强版)
  • 原文地址:https://www.cnblogs.com/lindexi/p/12087037.html
Copyright © 2011-2022 走看看