.NETCore C# 中级篇2-6 Json与XML

.NETCoreCSharp 中级篇2-6

本节内容为Json和XML操作

简介

Json和XML文本是计算机网络通信中常见的文本格式,其中Json其实就是JavaScript中的数组与对象,体现了一种面向对象的方式,而XML则是一种可标记语言,类似于我们的html标签,他更多的是体现一种层级关系。
但无论哪一种文本格式,我们都有学习的必要。

JSON

首先,介绍一下Json:
Json其实就是JavaScript里面的对象和数组,通过不同的组合,可以构成许多不同的数据结构。其中使用花括号的是对象,中括号的是数组,例如:

{
"data":
    {
        "people":
        [
            {"name":"ppppp","age":18}
        ]
    },
"status":0
}

这里面,data就是一个对象,而people就是一个数组。

如果你要处理Json数据,你在nuget上可以找到许多适宜的库,在这里,我是用的是LitJson,这可能是一个比较少见的库,但是我觉得很好用。

这里我给出我们的免费api地址https://www.sojson.com/api/weather.html,这里你可以请求到我们的json文本。

对于LitJson,它充分的阐明了我们Json的核心——数组与对象。对于LitJson,数组使用List,对象则直接创建一个类进行处理。对于上面的例子,我们可以构造出如下的类关系

public class data
{
    public List<People> people{ get; set; }
    public int status{ get; set; }
}
// 下面操作将json文本转换成data的对象
Main()
{
    JsonContent jsonc = JsonMapper.ToObject<data>(json);
    foreach(var t in data)
}

更多内容可以看我的这篇博文Json处理实战,以及LitJson的官网

XML

XML也是广泛应用于网络信息交换的一种常见文本格式,他的书写有点类似于我们的html,正如之前所说,他更多的是阐明一种层级关系。例如下文便是一个常见的xml文本的格式。

<Computers>
  <Computer ID="11111111" Description="Made in USA">
    <name>Surface</name>
    <price>5000</price>
  </Computer>
  <Computer ID="2222222" Description="Made in USA">
    <name>IBM</name>
    <price>10000</price>
  </Computer>
    <Computer ID="3333333" Description="Made in USA">
    <name>Apple Mac</name>
    <price>10000</price>
  </Computer>
</Computers>

在C#中,我们操作XML同样的有许多库,这里我们使用XmlDocument进行操作。

XmlDocument类中的常用方法:

  • Load(string path)加载文件路径的Xml
  • SelectSingleNode(string node)选中节点
  • ChildNodes,属性不是函数,用于获取所有子节点,返回XmlNodeList对象
  • HasChildNodes属性,判断是否有子节点
  • CreateElement创建新节点
  • AppendChild(XmlElement node)追加子节点
  • InsertBefore(XmlElement node,XmlElement ChildeNodes)向前插入
  • SetAttribute(string name,string value)为指定节点的新建属性并赋值
  • InnerText属性,获取内部文本
  • Save()保存
    XmlDocument myXmlDoc = new XmlDocument();
    //加载xml文件(参数为xml文件的路径)
    myXmlDoc.Load(xmlFilePath);
    //获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
    XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");
    //分别获得该节点的InnerXml和OuterXml信息
    string innerXmlInfo = rootNode.InnerXml.ToString();
    string outerXmlInfo = rootNode.OuterXml.ToString();
    //获得该节点的子节点(即:该节点的第一层子节点)
    XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
    foreach (XmlNode node in firstLevelNodeList)
    {
        //获得该节点的属性集合
        XmlAttributeCollection attributeCol = node.Attributes;
        foreach (XmlAttribute attri in attributeCol)
        {
            //获取属性名称与属性值
            string name = attri.Name;
            string value = attri.Value;
            Console.WriteLine("{0} = {1}", name, value);
        }

        //判断此节点是否还有子节点
        if (node.HasChildNodes)
        {
            //获取该节点的第一个子节点
            XmlNode secondLevelNode1 = node.FirstChild;
            //获取该节点的名字
            string name = secondLevelNode1.Name;
            //获取该节点的值(即:InnerText)
            string innerText = secondLevelNode1.InnerText;
            Console.WriteLine("{0} = {1}", name, innerText);
            //获取该节点的第二个子节点(用数组下标获取)
            XmlNode secondLevelNode2 = node.ChildNodes[1];
            name = secondLevelNode2.Name;
            innerText = secondLevelNode2.InnerText;
            Console.WriteLine("{0} = {1}", name, innerText);
        }
    }
}
    catch (Exception ex)
    {
         Console.WriteLine(ex.ToString());
    }

博主不常用xml,更多内容请参考微软官方文档以及https://www.cnblogs.com/zhengwei-cq/p/7242979.html的这篇博文

如果我的文章帮助了您,请您在github.NETCoreGuide项目帮我点一个star,在博客园中点一个关注和推荐。

Github

BiliBili主页

WarrenRyan‘sBlog

博客园

原文地址:https://www.cnblogs.com/WarrenRyan/p/11415716.html

时间: 2024-10-13 20:12:52

.NETCore C# 中级篇2-6 Json与XML的相关文章

JavaScript入门篇之新生代JSON遇XML

信息化到处被提及的特点,就是拥有大量的数据交互的格式.前阵子学习了XML的结构化数据,在学习javascript的时候又接触到了JSON,都作为数据的存储格式,二者之间有什么区别和联系呢,查了很多的资料,小编在这里就相当于写个总结了. 十年前,XML是主要的数据交换格式.它的出现,尤如一股清新的空气,以及令人惊喜的SGML(标准通用标记语言),是一个巨大的进步.它使人们能够做到以前想都不敢想的事情,本质上讲,XML就是一个文本文件,在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋

25个增强iOS应用程序性能的提示和技巧--中级篇

25个增强iOS应用程序性能的提示和技巧--中级篇 标签: ios性能优化内存管理 2013-12-13 10:55 738人阅读 评论(0) 收藏 举报  分类: IPhone开发高级系列(34)  本文收集了25个关于可以提升程序性能的提示和技巧,分为3个不同的等级:初级.中级和高级.您也可以点击查看初级篇. 在性能优化时,当你碰到一些复杂的问题,应该注意和使用如下技巧: 9.重用和延迟加载View10.缓存.缓存.缓存11.考虑绘制12.处理内存警告13.重用花销很大的对象14.使用Spr

25个增强iOS应用程序性能的提示和技巧(中级篇)(3)

25个增强iOS应用程序性能的提示和技巧(中级篇)(3) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分为3个不同的等级:初级.中级和高级.您也可以点击查看初级篇. AD:网+线下沙龙 | 移动APP模式创新:给你一个做APP的理由>> 18)降低Web.内容的影响 UIWebView非常有用.用它可以很容易的显示web内容,甚至可以构建UIKit空间难以显示的内容. 不过,你可以能已经注意到程序中

25个增强iOS应用程序性能的提示和技巧(中级篇)(2)

25个增强iOS应用程序性能的提示和技巧(中级篇)(2) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分为3个不同的等级:初级.中级和高级.您也可以点击查看初级篇. AD:网+线下沙龙 | 移动APP模式创新:给你一个做APP的理由>> 13) 重用花销很大的对象 有些对象的初始化非常慢——比如NSDateFormatter和NSCalendar.不过有时候可以避免使用这些对象,例如在解析JSON/

25 个增强iOS应用程序性能的提示和技巧 应用程序性能的提示和技巧 — 中级篇 中级篇

在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评.然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的.在开发过程中,有许多事项需要记住,并且关于性能影响很容易就忘记.这就是为什么我要写这篇文章!本文收集了25个关于可以提升程序性能的提示和技巧.目录 目录我把性能优化技巧分为3个不同的等级:初级.中级和高级:中级在性能优化时,当你碰到一些复杂的问题,应该注意和使用如下技巧:9. 重用和延迟加载View10. 缓

(中级篇 NettyNIO编解码开发)第十章-Http协议开发应用

HTTPC超文本传输协议〉协议是建立在TCP传输协议之上的应用层协议,它的发展是万维网协会和Internet工作小组IET'F合作的结果.HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过多年的使用和发展,得到了不断地完善和扩展.由于HTTP协议是目前Web开发的主流协议,基于HTTP的应用非常广泛,因此,掌握HTTP的开发非常重要,本章将重点介绍如何基于Netty的HTTP协议技进行HTTP服务端和客户端开发.由于Netty的

Farseer.net轻量级开源框架 中级篇:DbFactory数据工厂

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 执行SQL语句 下一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 越讲到后面,我们离基础的语法越远了.看到这篇文章,先恭喜下,说明大家已经能用该框架做日常的开发了. 当然还有一些绑定技巧,比如把枚举.List<Users>绑定到DorpDownList.CheckBoxList.RadioButtonList 并显示中文 在下一篇中再解释. 这一篇中,我们主要讲

25个增强iOS应用程序性能的提示和技巧 — 中级篇

本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的,假设你的程序执行迟钝或缓慢,会招致用户的差评. 然而由于iOS设备的局限性.有时候要想获得良好的性能.是非常困难的.在开发过程中.有很多事项须要记住.而且关于性能影响非常easy就忘记. 这就是为什么我要写这篇文章.本文收集了25个关于能够提升程序性能的提示和技巧. 文件夹 我把性能优化技巧分为3个

Farseer.net轻量级开源框架 中级篇:数据库切换

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 下一篇:Farseer.net轻量级开源框架 中级篇: SQL执行报告 上文中讲述了,在项目运行过程中,如何通过代码动态改变数据库的访问,这种方式更加倾向于实体类相同,有多个相同的表结构. 本篇中讲述的是,如何快速切换不同的数据库.比如你现在使用在使用SqlServer 哪天数据库老板心血来潮,让你换成Oracle了,怎么办? 这种数据库的切换在ORM中能明显突出