C # 操作 XML
概要讲一下 C# 对 XML 的使用
事实上,一个 XML 文件在加载入内存中后会是以 Dom 树的形式存在,
所以对一个 XML 文件的操作也就归根为一个对 Dom 的操作了,
首先看一下 XML 文件的大体结构
也即是一个学校里面的学生,拥有学号,姓名,性别,年龄
<?xml version="1.0" encoding="utf-8"?>
<School>
<Student number="001">
<Name>XiaoZhen</Name>
<Sex>男</Sex>
<Age>20</Age>
</Student>
<Student number="002">
<Name>BaoBei</Name>
<Sex>男</Sex>
<Age>20</Age>
</Student>
<Student number="003">
<Name>SuHa</Name>
<Sex>女</Sex>
<Age>21</Age>
</Student>
<Student number="004">
<Name>BaoBeiMe</Name>
<Sex>女</Sex>
<Age>20</Age>
</Student>
</School>
然后便是对其的基本操作了
public class getAllXmlData
{
private string xmlPath;
public getAllXmlData(string path)
{
xmlPath = path;
}
//即是获取指定路径的 XML文件中的所有数据
//并且是以 DataView 对象返回数据集
public DataView GetXmlDataView()
{
DataTable myTable = new DataTable();
DataRow myRow;
myTable.Columns.Add("学号", Type.GetType("System.String"));
myTable.Columns.Add("姓名", Type.GetType("System.String"));
myTable.Columns.Add("性别", Type.GetType("System.String"));
myTable.Columns.Add("年龄", Type.GetType("System.String"));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
XmlElement root = xmlDoc.DocumentElement;
foreach (XmlNode node in root.ChildNodes)
{
myRow = myTable.NewRow();
myRow["学号"] = node.Attributes["number"].Value;
myRow["姓名"] = node.SelectSingleNode("./Name").InnerText;
myRow["性别"] = node.SelectSingleNode("./Sex").InnerText;
myRow["年龄"] = node.SelectSingleNode("./Age").InnerText;
myTable.Rows.Add(myRow);
}
return myTable.DefaultView;
}
}
又如在 XML 文件中新增一条新的数据
public void InsertXmlData(string xmlPath)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
XmlElement root = xmlDoc.DocumentElement;
XmlElement student = xmlDoc.CreateElement("Student");
student.SetAttribute("number", strNumber);
XmlElement name = xmlDoc.CreateElement("Name");
name.InnerText = strName;
XmlElement sex = xmlDoc.CreateElement("Sex");
sex.InnerText = strSex;
XmlElement age = xmlDoc.CreateElement("Age");
age.InnerText = strAge;
student.AppendChild(name);
student.AppendChild(sex);
student.AppendChild(age);
root.AppendChild(student);
xmlDoc.Save(xmlPath);
}
由上面代码可以看出
对 XML 的一个操作完全是以 Dom 的形式来实现的
所以对 XML 的掌握程度关键还在于 Dom