1.什么是xml?
Xml(Extensible Markup Language),可扩展标记语言,一种用于存储数据或传输数据的标记语言,由万维网(W3C开发)。它允许开发人员创建自己的标记,且简单易读,易扩展,支持标准的字符编码,如UFT-8,UTF-16.
2. Xml文档的基本结构
2.1文档声明,包括文档版本(version)、编码格式(encoding).
<?xml version = “1.0”,encoding = “UTF-8”?>
2.2根元素(root element)
Xml文档必须包含一个根元素,其是xml文档所有元素的父元素,如:
<root>
<!--其他元素-->
</root>
2.3元素(element)
是xml文档的基本单位,包含文本和属性,元素用标签来标识,由<p>开始,</p>结束,如:
<p>这是一个段落</p>
2.4属性(property)
属性是元素的附加信息,属性在开始标签中定义,并以键值对的形式出现.如:
<p link = “www.baidu.com”这是一个链接/p>
2.5注释(Comment)
注释用于在xml文档中添加解释和说明,格式以<!--
开始,以-->
结束, 如下:
<!--这是我的注释-->
3.C#对xml文档的抽象
C#对xml文件进行了结构的抽象,支持xml文档的创建、读、写等操作.
3.1 xml文档被抽象成XmlDocument对象,Xml文档对象可以用XmlReader和XmlWriter类对xml文件对象进行读写
3.2 xml文档的元素
被抽象为XmlElement对象,这些对象包含了元素的名称,属性,子元素
3.3 xml文档的属性
XmlAttribute包含了元素的属性名称和值
3.4Xml文档的文本内容
XmlText对象访问文本内容
3.5xml节点处理
XmlNodelist,XmlNodeReader,XmlNodeWriter,用于xml文档的节点列表,读取,写入xml节点.
以上的类都在System.Xml命名空间下,需要引入.
4.创建xml文件的demo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _1.创建xml
{
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
//定义xml声明信息
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
//xml声明信息添加到文档对象下
doc.AppendChild(dec);
//给xml文档声明行添加注释
doc.AppendChild(doc.CreateComment("line above is the declaration for the xml document"));
//创建根元素的注释
XmlNode com = doc.CreateComment("line below is the root element");
doc.AppendChild(com);
//创建根节点
XmlElement root = doc.CreateElement("Root");
//将创建的Root元素添加到xml文档的根节点中
doc.AppendChild(root);
//循环添加多个结构相同的节点
int subnodeCnt = 6;
//定义随机数对象,用于产生年龄
Random rdm = new Random();
for (int i = 0; i < subnodeCnt; i++)
{
//创建当前元素的注释
XmlComment comment = doc.CreateComment($"这是第{i + 1}个子节点");
//将注释添加到root下面
root.AppendChild(comment);
//创建当前元素
XmlElement element = doc.CreateElement($"学生{i + 1}");
//给当前元素添加属性,如果当前元素没有ID属性,则添加ID属性;如果当前元素有ID属性,则更新ID属性的值
element.SetAttribute("ID", $"{i + 100}");
//给当前元素添加子元素,描述学生姓名信息
XmlElement name = doc.CreateElement("name");
name.InnerText = $"学生{i+1}";
element.AppendChild(name);
//给当前元素添加子节点,描述学生的年龄信息
XmlElement age = doc.CreateElement("Age");
age.InnerText = $"{rdm.Next(12, 19)}";
element.AppendChild(age);
//创建当前元素到根目录下
root.AppendChild(element);
}
doc.Save(@"D:\dwang\myxml.xml");
}
}
}
.5.读取xml文档demo文章来源:https://www.toymoban.com/news/detail-844898.html
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _2.读取x_m_l
{
class Program
{
static void Main(string[] args)
{
int i = 1;
string path = $@"D:\dwang\myxml{i}.xml";
XmlDocument doc = new XmlDocument();
doc.Load(path);
//获取根节点
XmlElement root = doc.DocumentElement;
//获取子节点(XmlNode是xmlElement,xmlComment的父类)
foreach (XmlNode student in root.ChildNodes)
{
//忽略xml文件中的注释节点(XmlComment)
if (student as XmlElement == null)
continue;
Console.Write($"{student.Name}--{((XmlElement)student).GetAttribute("name")}");
foreach (XmlElement subnode in student.ChildNodes)
{
Console.Write($"--{subnode.Name}--{subnode.InnerText}");
}
Console.Write("\r\n");
}
Console.ReadKey();
}
}
}
6.修改xml文档的demo,包括更新节点,添加节点,删除节点等.文章来源地址https://www.toymoban.com/news/detail-844898.html
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _3.修改xml
{
class Program
{
static void Main(string[] args)
{
//添加节点,修改节点,删除节点
XmlDocument doc = new XmlDocument();
//加载xml文档
string path = $@"D:\dwang\myxml1.xml";
doc.Load(path);
//获取根节点
XmlElement root = doc.DocumentElement;
//获取根节点名称
string name_RootNode = root.Name;
//添加节点
XmlElement newStudent = doc.CreateElement("newStuent");
//设置newStuent元素的属性
newStudent.SetAttribute("ID", "888");
//添加newStuent元素的子节点name,age
XmlElement name = doc.CreateElement("name");
name.InnerText = "newstuentName";
newStudent.AppendChild(name);
XmlElement age = doc.CreateElement("age");
age.InnerText = "68";
newStudent.AppendChild(age);
//将新学生元素添加到根节点最后一个子元素后面
root.InsertAfter(newStudent, root.ChildNodes[root.ChildNodes.Count-1]);
//删除指定的节点两种常用方式(XPath)
//删除指定的节点两种常用方式(XPath)
//方式1
XmlNode node1 = doc.SelectSingleNode(@"/Root/学生1");//注意节点的大小写,否则会找不到节点
XmlNode node1_parent = node1?.ParentNode;
node1_parent?.RemoveChild(node1);//获取指定的节点后,要用该节点的父节点对象删除该节点
//方式2
XmlNode node = root.SelectSingleNode("//学生2");
if(node != null)
root?.RemoveChild(node);
//更新xml节点信息
//获取指定节点元素
XmlElement student3 = doc.SelectSingleNode(@"/Root/学生3") as XmlElement;
//更新ID属性值
student3?.SetAttribute("ID", "000001");
//设置当前节点的指定子节点的innerText
if (student3 != null)
{
student3["Age"].InnerText = "28";
student3["name"].InnerText = "Student--3";
}
//保存xml文档
doc.Save(path);
}
}
}
到了这里,关于XML的基础知识及XMl文件的创建/读取/更新demo详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!