可扩展标记语言XML
1.1 XML的概述
1.1.1 什么是XML
XML的含义: XML称为可扩展标记性语言(eXtensible Markup Language)。XML是一种标记语言很类似于HTML语言,不过XML用于传输和存储数据而非显示数据。并且XML仅仅是纯文本。XML还是W3C的推荐标准。
1.1.2 XML的结构
XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。XML 文档必须包含根元素。该元素是所有其他元素的父元素。
例如:
<?xml version="1.0" encoding="UTF-8" ?>
<Enginner>
<!--第一个员工的相关信息-->
<ID>1002</ID>
<Name>张靓</Name>
<Age>20</Age>
<!--第二个员工的相关信息-->
<ID>1001</ID>
<Name>周杰</Name>
<Age>22</Age>
</Enginner>
1.2.3 XML的语法和命名规则
1、XML语法:
(1)所有 XML 元素都须有关闭标签。
(2)XML 标签对大小写敏感。
(3)XML 必须正确地嵌套。
(4)XML 文档必须有根元素。
(5)XML 的属性值须加引号。
2、XML命名规则:
(1)名称可以含字母、数字以及其他的字符。
(2)名称不能以数字或者标点符号开始。
(3)名称不能以字符 “xml”(或者 XML、Xml)开始。
(4)名称不能包含空格。
3、XML实体的引用和注释:
注释:<!--内容-->
实体的引用:
<; | < | 小于 |
---|---|---|
>; | > | 大于 |
&; | & | 和号 |
&apos; | ’ | 单引号 |
"; | ‘’ | 引号 |
1.1.4 XML的用途
XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。
(1)XML 把数据从 HTML 分离
(2)XML 简化数据共享
(3)XML 简化数据传输
(4)XML 简化平台的变更
(5)XML 使您的数据更有用
1.1.5 XML和HTML的区别
(1)XML 不是 HTML 的替代。
(2)XML 和 HTML 为不同的目的而设计。
(3)XML 被设计为传输和存储数据,其焦点是数据的内容。
(4)HTML 被设计用来显示数据,其焦点是数据的外观。
(5)HTML 旨在显示信息,而 XML 旨在传输信息。
1.2 操作XML的方法
1.2.1 解析XML文件
解析XML文件的步骤:
(1)导入命名空间:
using System.Xml;
(2)new一个XmlDocuemnt对象:
XmlDocuemnt xmlD = new XmlDocument();
(3)加载xml文件:
xmlD.Load("xml文件路径");
(4)读取节点:
//读取根节点:
XmlNode node = xmlD.DocumentElement;
XmlElement xmlE = xmlD.DocumentElment;
//读取子节点:
foreach(XmlNode nodes in node.ChildNodes){}
例如:
static void Main(string[] args)
{
XmlDocument myXml = new XmlDocument();
myXml.Load("Enginner.xml");//读取指定的XML文档
XmlNode engineer = myXml.DocumentElement;//读取XML的根节点
foreach (XmlNode node in engineer.ChildNodes)//对子节点进行循环
{
//将每个节点的内容显示出来
switch (node.Name)
{
case "ID":
Console.WriteLine("ID:{0}", node.InnerText);
break;
case "Name":
Console.WriteLine("姓名:{0}",node.InnerText);
break;
case "Age":
Console.WriteLine("年龄:{0}", node.InnerText);
break;
}
}
Console.Read();
}
1.2.2 操作XML的对象和属性方法
(1)XmlDocument对象:
属性和方法 | 说明 |
---|---|
DocmentElement属性 | 获取根节点 |
ChildNodes属性 | 获取所有子节点 |
Load()方法 | 读取整个XML的结构 |
(2)XmlNode对象:
属性和方法 | 说明 |
---|---|
InnerText属性 | 当前节点的值 |
Name属性 | 当前节点的名称 |
ChildNodes属性 | 当前节点的所有子节点 |
例如:
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
//加载xml文件
xmlDoc.Load("FullChannels.xml");
//获取根节点
//XmlNode xmlRoot = xmlDoc.DocumentElement;
XmlElement xmlRoot = xmlDoc.DocumentElement;
//遍历Channel
foreach (XmlNode node in xmlRoot.ChildNodes)
{
//按节点名称查找节点对象
Console.WriteLine(node["ChannelType"].InnerText + "\t" + node["tvChannel"].InnerText + "\t" + node["path"].InnerText);
}
Console.ReadLine();
}
(3)区别XmlNode和XmlElement:
1、XmlNode是abstarct,XmlElement是class。
2、XmlElement是XmlNode的子类。
1.3 用TreeView显示数据
1.3.1 TreeView动态添加节点
给TreeView添加子节点用Add()方法。
(1)创建一个TreeNode节点
//创建一个节点对象
TreeNode rootNode = new TreeNode(this.txtTitle.Text);
//添加节点为TreeView
this.tvMenu.Nodes.Add(rootNode);
(2)Add()方法的参数可以是文本
this.tvMenu.Nodes.Add("音乐新闻");
(3)Add()方法的返回值是当前添加的节点对象
TreeNode rootNode;
rootNode = this.tvMenu.SelectedNode.Nodes.Add("音乐频道");
(4)给选中的节点添加子节点
this.tvMenu.SelectedNode.Add(node);
//例如:
//创建一个子节点对象
TreeNode childNode = new TreeNode(this.txtTitle.Text);
//添加节点为选中节点的子节点
this.tvMenu.SelectedNode.Nodes.Add(childNode);
1.3.2 TreeView的属性和重要事件以及TreeNode的属性
(1)TreeView的属性和重要事件:
属性和重要事件 | 说明 |
---|---|
Nodes属性 | TreeView控件中的所有树节点 |
SelectedNode属性 | 当前TreeView控件中选中的树节点,如果当前没有选中树节点,返回值为null |
AfterSelect事件 | 选中树节点之后发生 |
(2)TreeNode属性:
属性 | 说明 |
---|---|
Text | 节点显示的文本 |
Index | 节点在所在集合的索引 |
Level | 节点在树状菜单中的层级 |
Tag | 节点值 |
Nodes | 节点的所有下一级节点 |
1.3.2 TreeView动态删除节点
(1)选中删除的节点
this.tvMenu.SelectedNode.Remove();
(2)清空选中的节点的子节点
this.tvMenu.SelectedNode.Nodes.Clear();
(3)清空TreeView控件的所有子节点
this.tvMenu.Nodes.Clear();
1.4总结
(1)XML称为可扩展标记语言,它主要用于传输和存储数据。
(2)读取一个XML文档使用XmlDocument对象,XML节点使用XmlDoc对象表示。
(3)XmlDocument对象的DocumentElement属性可以获得XML文档的根节点,ChildNode属性可以获得所有子节点。
(4)通过TreeNode的Add()方法可以给TreeView添加节点,Remove()方法可以移除指定的节点,Clear()方法可以移除指定节点下的所有节点。