using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace xml
{
public class RWXml
{
/// <summary>
/// 生成一个XML文档
/// </summary>
public void WriteXml()
{
//随机数
Random rd = new Random();
//创建XML
/* 1,实例化xml Doucument*?*/
XmlDocument xDoc = new XmlDocument();
//创建一个生命XML的声明
XmlDeclaration declaration = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
xDoc.AppendChild(declaration);
//一个XML必须要有一个跟元素
//创建跟节点
XmlElement elem = xDoc.CreateElement("students");
//把根节点添加到文档中去
xDoc.AppendChild(elem);
for (int i = 1; i <= 10; i++)
{
//创建子节点
XmlElement elem1 = xDoc.CreateElement("student");
//将第一级的子节点放置到跟节点下面
elem.AppendChild(elem1);
//给节点添加属性
elem1.SetAttribute("学号",rd.Next(1000,99999).ToString());// i.ToString());
elem1.SetAttribute("姓名", "张三");
//创建子节点的子节点
XmlElement elem1_1 = xDoc.CreateElement("语文");
//将第二级的子节点放置到跟节点下面
elem1.AppendChild(elem1_1);
//增加节点中的数据
elem1_1.InnerText = rd.Next(60,100).ToString();
//创建子节点的子节点
XmlElement elem1_2 = xDoc.CreateElement("数学");
//将第二级的子节点放置到跟节点下面
elem1.AppendChild(elem1_2);
elem1_2.InnerText = rd.Next(60, 100).ToString();
//创建子节点的子节点
XmlElement elem1_3 = xDoc.CreateElement("外语");
//将第二级的子节点放置到跟节点下面
elem1.AppendChild(elem1_3);
elem1_3.InnerText = rd.Next(60, 100).ToString();
}
xDoc.Save("students.xml");
}
///<summary>
///读取XML文档
///</summary>
public void ReadXml()
{
//实例化一个XML操作对象
XmlDocument xDoc = new XmlDocument();
xDoc.Load("students.xml");
//获取根节点
XmlNode node = xDoc.SelectSingleNode("students");
XmlNodeList nodelist = node.ChildNodes;
foreach(XmlNode xn in nodelist)
{
// string name = xn.Name;
//做类型转换
XmlElement xmle = (XmlElement)xn;
string name = xmle.GetAttribute("姓名");
string no = xmle.GetAttribute("学号");
Console.WriteLine(name+":"+no);
XmlNodeList childlist = xn.ChildNodes;
//读取子节点中的成绩值
foreach (XmlNode n in childlist)
{
//类型转换
XmlElement xe = (XmlElement)n;
string ClassName = xe.Name;
string Score = xe.InnerText;
Console.WriteLine(ClassName + ":" + Score);
//修改特定的人的成绩
if ((no == "7290") && (ClassName == "语文"))
{
xe.InnerText = "100";
}
}
}
xDoc.Save("students.xml");
Console.ReadKey();
}
}
}