博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#学习速记_XML和JSON
阅读量:6302 次
发布时间:2019-06-22

本文共 3408 字,大约阅读时间需要 11 分钟。

hot3.png

XML 基础

  • 可扩展标记语言
  • 是一种数据语言,用于将数据存储在简单的文本格式里,可以被人类任何计算机理解
  • 是一种 W3C 标准,类似 HTML
  • 用 XML 声明,XML 名称空间,XML 元素和特征来创建 XML 文档
  • XML 声明定义了 XML 版本
  • XML 名称空间用于定义词汇表
  • XML 元素和特征用于定义 XML 文档的内容
// 基本结构
Beginning Visual C# 2015
Benjamin Perkins et al
096689

JSON基础

  • 数据语言
  • Javascript Object
// 基本结构{    "book": [{        "title": "Beginning Visual C# 2015",        "author": "Benjamin Perkins et al",        "code": "096689"    }]}

XML 模式

  • XML 文档可以用模式类描述
  • 模式是另一个XML文件,描述了允许在一个特定的文档中使用的元素和特征
  • 可以根据模式验证 XML 文档,确保程序不会遇到不打算处理的数据
  • 用于 C# 标准模式 XML 格式是 XSD(XML Schema Definition)

XML 文档对象模型

  • Document Object Model
  • 一组以非常直观的方式访问和处理 XML 的类

常用的 DOM 类

类名 说明
XmlNode 表示文档树中的一个结点,如果是 XML 文档的根,可以从它导航到文档的任意位置
XmlDocument 扩展了XmlNode,通常是使用 XML 的第一个对象,用于加载磁盘或其他地方的数据并在这些位置保存数据
XmlElement 表示 XML 文档中的一个元素,派生自 XmlLinkedNode, XmlLinkedNode 派生于 XmlNode
XmlAttribute 表示一个特性,派生于 XmlNode
XmlText 表示开始标记和结束标记之间的文本
XmlComment 特殊类型节点,不是文档的一部分,为阅读器提供文档各部分的信息
XmlNodeList 表示一个节点集合

XmlDocument

using System.Xml; // 使用前引入XmlDocument document = new XmlDocument();document.Load(@"C:\books.xml");

XmlElement

XmlDocument document = new XmlDocument();document.Load(@"C:\books.xml");XmlElement element = document.DocumentElement; // 返回根结点

XmlElement的属性

属性 说明
FirstChild 返回当前节点之后的第一个节点,返回 XmlNode 对象
LastChild 返回当前节点后的最后一个子节点
ParentNode 返回当前节点的父节点
NextSibling 返回有相同父节点的下一个节点
HasChildNodes 检查当前元素是否有子元素

修改节点的值

获取结点值的3种方法

属性 说明
InnerText 获取当前节点中所有子节点的文本,以一个串联字符串的方式返回
InnerXml 获取当前节点中所有子节点的所有内容
Value 返回当前节点值,适用于 XmlText, XmlComment, XmlAttribute

插入新节点

用于创建节点的方法

方法 说明
CreateNode 创建任意类型的节点
CreateElement 创建 XmlElement 类型的节点
CreateAttribute 创建 XmlAttribute 类型的节点
CreateTextNode 创建 XmlTextNode 类型的节点
CreateComment 创建注释

用于插入节点的方法

方法 说明
AppendChild 将新节点追加到 XmlNode 类型或其派生类型的节点最后
InsertAfter 新节点插入在参考节点之后
InsertBefore 新节点插入在参考节点前面
XmlDocument document = new XmlDocument();document.Load(bookFile);XmlElement root = document.DocumentElement;XmlElement newBook = document.CreateElement("book");XmlElement newTitle = document.CreateElement("title");XmlElement newAuthor = document.CreateElement("author");XmlElement newCode = document.CreateElement("code");XmlText title = document.CreateTextNode("Beginning Visual C# 2015");XmlText author = document.CreateTextNode("Karli Watson et al");XmlText code = document.CreateTextNode("314418");XmlComment comment = document.CreateComment("The previous edition");newBook.AppendChild(comment);newBook.AppendChild(newTitle);newBook.AppendChild(newAuthor);newBook.AppendChild(newCode);newTitle.AppendChild(title);newAuthor.AppendChild(author);newCode.AppendChild(code);root.InsertAfter(newBook, root.LastChild);document.Save(bookFile);

删除结点

用于删除结点的方法

方法 说明
RemoveAll 删除节点上的所有子节点,并且删除结点上的所有特性
RemoveChild 删除节点上的一个子节点,返回删除结点

选择结点

用于选择节点的方法

方法 说明
SelectSingleNode 选择一个节点。如果创建一个查找多个节点的查询,就只返回第一个节点
SelectNodes 以 XmlNodesList 类的形式返回一个节点集合

把 XML 转换为 JSON

使用 NewtonsoftJSON.NET 包

string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(document);

用 XPath 搜索 XML

XPath 是XML 文档的查询语言

XPath 的常用操作

目的 示例
选择当前节点 .
选择当前节点的父节点 ..
选择当前节点的所有子节点 *
选择具有特定名称的所有子节点 Title
选择当前节点的指定的一个特征
选择当前节点的所有特性
按照索引选择一个子节点 element[3]
选择当前节点的所有文本节点 text()
选择当前节点的一个或多个孙子节点 element/text()
在文档中选择具有特定名称的所有节点 //masss
在文档中选择具有特定名称和特定父节点名称的所有节点 //element/name
选择值满足条件的节点 //element[name='OK']
选择特性满足条件的节点 //element[@firstname='OK']
XmlNodeList nodes = document.DocumentElement.SelectNodes(query);

转载于:https://my.oschina.net/moyung2014/blog/1819848

你可能感兴趣的文章
订单的子单表格设置颜色
查看>>
Office365 Exchange Hybrid 番外篇 ADFS后端SQL群集(一)
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
lvs fullnat部署手册(三)rs内核加载toa篇
查看>>
C++策略模式
查看>>
我的友情链接
查看>>
oracle表分区详解
查看>>
网络编程中常见结构体
查看>>
SSL/TLS原理详解
查看>>
Docker 自定义SSH服务镜像
查看>>
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
查看>>
configure: error: in `/root/httpd-2.2.11/srclib/apr': c
查看>>
CentOS7搭建Kubernetes-dashboard管理服务
查看>>
buildroot下查找外部编译器通过ext-toolchain-wrapper调用的参数
查看>>
MySQL Replication 主主配置详细说明
查看>>
Linux的任务调度
查看>>
在Android studio中添加jar包方法如下
查看>>
iframe 在ie下面总是弹出新窗口解决方法
查看>>
分享10款漂亮实用的CSS3按钮
查看>>
安装nginx 常见错误及 解决方法
查看>>