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"}}
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

最新文章

  1. 麦咖啡阻挡正常打开Excel文件
  2. 烂泥:linux文件同步之rsync学习(一)
  3. Nodejs学习笔记(七)--- Node.js + Express 构建网站简单示例
  4. C#局域网桌面共享软件制作(一)
  5. Android (cocos2dx 网络访问)访问权限设置
  6. shell中if判断一个变量为空
  7. 项目的敏捷开发方法(转自MBAlib)
  8. UML 的基本组成
  9. BOOST_PP_INC_I(x)实现
  10. ##DAY1 UI、frame、center、bounds、UIVIew
  11. 对于COM对象使用ComPtr代替传统指针
  12. hdu 4831 Scenic Popularity(模拟)
  13. [20190416]process allocation latch.txt
  14. ipv6禁用导致rpcbind服务启动失败实例
  15. SAP ABAP编程 取得用户中文名称
  16. 使用IDEA 搭建SpringMVC +Easyui 实现最简单的数据展示功能
  17. axios 拦截 , 页面跳转, token 验证
  18. 【Asp.net入门08】第一个Asp.net应用程序-创建窗体并设置其样式
  19. C++11_Type Traits
  20. js前台调用lodop打印

热门文章

  1. 所有input输入完成后,改变按钮颜色
  2. spring学习笔记之---JDBC Template
  3. [洛谷P3939]:数颜色(二分)
  4. [CSP-S模拟测试]:matrix(DP)
  5. 5-2 Django的路由层(urlconf) 2
  6. P3928奶酪
  7. 014-elasticsearch5.4.3【五】-搜索API【三】复合查询boolQuery、constantScoreQuery、disMaxQuery
  8. sql时间类型相关
  9. 类BigDecimal
  10. 关于Tomcat的浅谈