前言:
XML称为可扩展标记性语言,是eXtensible Markup Language 的缩写。在.NET框架中XML是非常重要的一部分,它用于描述数据,是当前处理结构化文档信息的有力工具。XML与操作系统,编程语言的开发平台无关,可以实现不同系统之间的数据交互。
示例:
<?xml version="1.0" encoding="utf-8"?>
<Contacts><!--注释-->
<Contact id="01">
<Name>Daisy Abbey</Name>
<Gender>female</Gender>
</Contact>
</Contacts>
第一行是XML文档的声明,主要由两个部分组成:
version:文档符合XML1.0规范。
encoding:文档字符编码,默认为"UTF-8"
注释:使用<!--内容-->格式,无法被嵌套
标签:自定义的,包括属性
注意:XML是一种标记语言,严格区分大小写,必须成对出现,注意结尾的反斜杠
生成XML文件
private void button1_Click(object sender, EventArgs e) //生成
{
//创建XmlDocument对象
XmlDocument document = new XmlDocument();
//xml文档的声明部分
XmlDeclaration declaration = document.CreateXmlDeclaration("1.0", "UTF-8", "");//xml文档的声明部分
document.AppendChild(declaration);//添加至XmlDocument对象中
//创建用户对象
User xrz = new User() { ID = txt_id.Text, Name = txt_name.Text, Age = txt_age.Text, Explain = txt_explain.Text };
//创建根节点User
XmlElement User = document.CreateElement("User");//CreateElement(节点名称)
//设置根节点的属性
User.SetAttribute("Type","员工");
//创建子节点ID
XmlElement ID = document.CreateElement("ID");
ID.InnerText = xrz.ID; //设置其值
XmlElement Name = document.CreateElement("Name");
Name.InnerText = xrz.Name;
XmlElement Age = document.CreateElement("Age");
Age.InnerText = xrz.Age;
XmlElement Explain = document.CreateElement("Explain");
Explain.InnerText = xrz.Explain;
//添加至父节点User中
User.AppendChild(ID);
User.AppendChild(Name);
User.AppendChild(Age);
User.AppendChild(Explain);
//将根节点添加至XML文档中
document.AppendChild(User);
//保存输出路径
document.Save(@"E:\"+xrz.ID+xrz.Name+".xml");
///>
///注意要把根节点添加至XML文档中
///多层级只需要在其子节点使用AppendChild再次添加即可
///使用XmlElement对象的SetAttribute方法设置其属性
///在保存路径的时候最好使用异常处理
}
}
class User
{
public string ID { get; set; }
public string Name { get; set; }
public string Age { get; set; }
public string Explain { get; set; }
}
读取XML文件(XmlDocument)
//创建XML文档类
XmlDocument xmlDoc = new XmlDocument();
//加载xml文件
xmlDoc.Load("files/FullChannels.xml"); //从指定的位置加载xml文档
//获取根节点
XmlElement xmlRoot = xmlDoc.DocumentElement; //DocumentElement获取文档的跟
//遍历节点
foreach(XmlNode node in xmlRoot.ChildNodes)
{
//根据节点名称查找节点对象
Console.WriteLine(node["channelType"].InnerText + "\t" + node["tvChannel"].InnerText + "\t" + node["path"].InnerText);
}
Load的路径为:bin\Debug\
读取XML文件(XmlTextReader)
//System.Environment.CurrentDirectory系统路径,bin-Debug下
//XmlTextReader 文档流的读取方式,只读
XmlTextReader reader = new XmlTextReader(System.Environment.CurrentDirectory + @"\北京电视台.xml");
while(reader.Read())
{
if (reader.Name == "playTime") //判断节点名称
{
Console.WriteLine(reader.ReadString());//将节点内容读取为一个字符串
}
else if (reader.Name == "median")
{
Console.WriteLine(reader.ReadString());
}
else if (reader.Name == "programName")
{
Console.WriteLine(reader.ReadString());
}
}
reader.Close(); //关闭文档流
根据XML文件生成TreeView
private void button1_Click(object sender, EventArgs e) //填充
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("files/Student.xml");
XmlElement xmlnode = xmlDoc.DocumentElement;
foreach(XmlNode node in xmlnode.ChildNodes)
{
this.treeView1.Nodes.Add(node["Name"].InnerText); //添加根节点
for (int i = 0; i < this.treeView1.Nodes.Count; i++) //遍历根节点确认为其添加子节点
{
if (this.treeView1.Nodes[i].Text.Equals(node["Name"].InnerText))
{
this.treeView1.Nodes[i].Nodes.Add(node["Age"].InnerText);
this.treeView1.Nodes[i].Nodes.Add(node["Hobby"].InnerText);
}
}
}
}