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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

  • 相关阅读:
    MySQL的char和varchar针对空格的处理
    单KEY业务,数据库水平切分架构实践
    接口测试学习笔记1-接口测试的用例设计
    Robot Framework源码解析(2)
    Robot Framework 源码解析(1)
    Python学习笔记1 -- TypeError: 'str' object is not callable
    OKHttp源码学习同步请求和异步请求(二)
    OKHttp源码学习--HttpURLConnection HttpClient OKHttp Get and post Demo用法对比
    Javapoet源码解析
    Universal-Image-Loader源码解解析---display过程 + 获取bitmap过程
  • 原文地址:https://www.cnblogs.com/lindexi/p/12087037.html
Copyright © 2011-2022 走看看