1 读取xml文件内容
XmlDataDocument doc = new XmlDataDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
string filename = @"students.xml";
XmlReader reader = XmlReader.Create(filename, settings);
doc.Load(reader);
1.2 测试用例
<grades>
<grade>
<id>2019001</id>
<name>张三</name>
<course>机器学习</course>
<score>85</score>
</grade>
<grade>
<id>2019002</id>
<name>李四</name>
<course>操作系统</course>
<score>90</score>
</grade>
<grade>
<id>2019003</id>
<name>王五</name>
<course>数据结构</course>
<score>95</score>
</grade>
</grades>
1.3 分别读取根节点下的子节点内容
XmlNode xn = doc.SelectSingleNode("grades");
XmlNodeList nodeList = xn.ChildNodes;
int cnt = nodeList.Count;
Students[] students = new Students[cnt];
int i = 0;
foreach (XmlNode xnl in nodeList)
{
XmlNodeList xnls = xnl.ChildNodes;
String id = xnls.Item(0).InnerText;
String name = xnls.Item(1).InnerText;
String project = xnls.Item(2).InnerText;
int grade = Convert.ToInt32(xnls.Item(3).InnerText);
Students student = new Students(id, name, project, grade);
students[i++] = student;
Console.WriteLine("获得学号为 {0} 的信息", id);
}
Console.WriteLine("获取学生信息完毕。");
1.4 输出结果
2019003,王五,数据结构,95
2019002,李四,操作系统,90
2019001,张三,机器学习,85
2 写入xml文件
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
filename = @"test.xml";
XmlWriter writer = XmlWriter.Create(filename,settings);
2.1 测试用例
201833,王二,操作系统,70
201834,张三,操作系统,90
201834,张三,嵌入式系统,20
2.1 写入xml文件子节点内容和属性
writer.WriteStartDocument();
writer.WriteStartElement("students");
foreach(Students stu in students)
{
writer.WriteStartElement("student");
writer.WriteStartElement("学号");
writer.WriteString(stu.studentId);
writer.WriteEndElement();
writer.WriteStartElement("姓名");
writer.WriteString(stu.studentName);
writer.WriteEndElement();
for(int i = 0; i < stu.projectName.Count; i++)
{
writer.WriteStartElement("课程");
writer.WriteAttributeString("课程名", stu.projectName[i]);
writer.WriteString(stu.grades[i].ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();
3.1 结果
<?xml version="1.0" encoding="utf-8"?>
<students>
<student>
<学号>201833</学号>
<姓名>王二</姓名>
<课程 课程名="操作系统">70</课程>
</student>
<student>
<学号>201834</学号>
<姓名>张三</姓名>
<课程 课程名="操作系统">90</课程>
<课程 课程名="嵌入式系统">20</课程>
</student>
</students>