1/定義一個XmlDocument對象xDoc
2/通過XmlDocument來load需要讀取的xml文件
3/通過XmlDocument的SelectSingleNode來找到節點,並把節點轉換為XmlElement
4/XmlElement 可以對節點的屬性進行操作
<?xml version="." encoding="gb"?>
<bookstore>
<book genre="fantasy" ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
</bookstore>
1、往<bookstore>節點中插入一個<book>節點:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe=xmlDoc.CreateElement("book");//創建一個<book>節點
xe.SetAttribute("genre","李小龍");//設置該節點genre屬性
xe.SetAttribute("ISBN","--");//設置該節點ISBN屬性
XmlElement xesub=xmlDoc.CreateElement("title");
xesub.InnerText="CS從入門到精通";//設置文本節點
xe.AppendChild(xesub);//添加到<book>節點中
XmlElement xesub=xmlDoc.CreateElement("author");
xesub.InnerText="候捷";
xe.AppendChild(xesub);
XmlElement xesub=xmlDoc.CreateElement("price");
xesub.InnerText=".";
xe.AppendChild(xesub);
root.AppendChild(xe);//添加到<bookstore>節點中
xmlDoc.Save("bookstore.xml");
//================
結果為:
<?xml version="." encoding="gb"?>
<bookstore>
<book genre="fantasy" ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
<book genre="李小龍" ISBN="--">
<title>CS從入門到精通</title>
<author>候捷</author>
<price>.</price>
</book>
</bookstore>
2、修改節點:將genre屬性值為“李小龍“的節點的genre值改為“update李小龍”,將該節點的子節點<author>的文本修改為“亞勝”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//獲取bookstore節點的所有子節點
foreach(XmlNode xn in nodeList)//遍歷所有子節點
{
XmlElement xe=(XmlElement)xn;//將子節點類型轉換為XmlElement類型
if(xe.GetAttribute("genre")=="李小龍")//如果genre屬性值為“李贊紅”
{
xe.SetAttribute("genre","update李小龍");//則修改該屬性為“update李贊紅”
XmlNodeList nls=xe.ChildNodes;//繼續獲取xe子節點的所有子節點
foreach(XmlNode xn in nls)//遍歷
{
XmlElement xe=(XmlElement)xn;//轉換類型
if(xe.Name=="author")//如果找到
{
xe.InnerText="亞勝";//則修改
break;//找到退出來就可以了
}
}
break;
}
}
xmlDoc.Save("bookstore.xml");//保存。
//=================
最后結果為:
<?xml version="." encoding="gb"?>
<bookstore>
<book genre="fantasy" ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
<book genre="update李小龍" ISBN="--">
<title>CS從入門到精通</title>
<author>亞勝</author>
<price>.</price>
</book>
</bookstore>
3、刪除 <book genre="fantasy" ISBN="--">節點的genre屬性,刪除 <book genre="update李贊紅" ISBN="--">節點。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//刪除genre屬性
}
else if(xe.GetAttribute("genre")=="update李小龍")
{
xe.RemoveAll();//刪除該節點的全部內容
}
}
xmlDoc.Save("bookstore.xml");
//====================
最后結果為:
<?xml version="." encoding="gb"?>
<bookstore>
<book ISBN="--">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>.</price>
</book>
<book>
</book>
</bookstore>
4、顯示所有數據。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeList xnl=xn.ChildNodes;
foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//顯示屬性值
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnff=xe.ChildNodes;
foreach(XmlNode xn in xnff)
{
Console.WriteLine(xn.InnerText);//顯示子節點點文本
}
}
