概要講一下 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