在實際的應用開發中需要我們對xml進行添加節點和屬性,動態的去完成,在這之前,先看看XmlNode和XmlElement之間的關係
1、XmlElement繼承XmlLinkedNode又繼承XmlNode,所以XmlElement是XmlNode的子集,那麼從繼承的關係來說,
XmlNode的屬性,XmlElement也可以使用。
2、XmlNode是.Net提供的抽象類,不能直接實例化,只能通過XmlDocument的CreateNode方法來創建,但是
XmlElement則不需要,可以直接實例化創建
3、爲節點添加屬性的時候,可以直接通過XmlElement的SetAttribute來添加,也可以通過XmlNode的Attribute的add方法
來添加,同樣添加文本節點的時候也是如此
4、XmlDocument是XmlNode的擴展類,包含了很多XmlNode沒有的方法和屬性,我們可以通過它將xml加載到內存中通過
Dom來處理,也可以通過它來創建節點等
下面就來看看如何添加節點和屬性
1、首先我們需要創建一個節點元素,創建的時候我們可以通過XmlDocument的CreateElement來創建,或者是通過
XmlElement直接實例化,然後通過屬性賦值,比如Name
2、創建一個XmlNode,也就是說創建的節點需要放在什麼位置,然後創建的節點加入該XmlNode後面就可以了(可以通過
XmlNode的AppendChild方法來添加),比如加入根目錄下面:XmlDocument.DocumentElement.PrependChild
(XmlElement),如果是其他節點下,可以通過Xmldocument的SelectSingleNode("//Titles//Title")來獲得XmlNode
3、添加屬性的時候,可以直接在創建XmlElment的時候,通過XmlElement的SetAttribute來爲節點創建屬性,或者是創建
一個XmlAttribute實例:XmlAttribute xmlArr=XmlDocument.CreateAttribute("屬性值"),然後通過XmlNode的
Attributes.add(XmlArribute)來添加
下面來具體看幾個例子吧
<?xml version="1.0" encoding="utf-8"?>
<Titles>
<Title ID="21" Name="王六" />
<Title ID="20" Name="王五" />
<Title ID="19" Name="李四" />
<Title ID="18" Name="張三" />
<Title ID="16" Name="asdf" />
<Title ID="17" Name="12" />
</Titles>
添加方法
protected void Button3_Click(object sender, EventArgs e)
{
//加載xml文檔
XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/Title.xml");
doc.Load(path);
//創建節點
XmlElement xmlElement = doc.CreateElement("Title");
//添加屬性
xmlElement.SetAttribute("ID", "21");
xmlElement.SetAttribute("Name","王六");
//將節點加入到指定的節點下
XmlNode xml = doc.DocumentElement.PrependChild(xmlElement);
doc.Save(path);
}
或者是
protected void Button3_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/Title.xml");
doc.Load(path);
//創建節點
XmlElement xmlElement = doc.CreateElement("Title");
////將節點加入到指定的節點下
XmlNode xmlTitle = doc.DocumentElement.PrependChild(xmlElement);
//爲該節點加入屬性
XmlAttribute xmlID = doc.CreateAttribute("ID");
xmlID.Value = "22";
xmlTitle.Attributes.Append(xmlID);
XmlAttribute xmlName = doc.CreateAttribute("Name");
xmlName.InnerText = "小三";
xmlTitle.Attributes.Append(xmlName);
doc.Save(path);
}
如果不需要創建節點,直接通過SelectSingleNode(string path)來獲取XmlNode,然後再添加屬性或者文本節點等,如下:
protected void Button2_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
string path = Server.MapPath("~/XMLFile.xml");
doc.Load(path);
//創建一個book節點
XmlNode xml = doc.SelectSingleNode("//TiTles//TiTle");
XmlAttribute xmlAttribute = doc.CreateAttribute("ss");
xmlAttribute.InnerText = "bb";
xml.Attributes.Append(xmlAttribute);
doc.Save(path);
}
大概過程就是
1、通過XmlDocument加載xml文件到內存
2、創建XmlElement節點(可以通過SetAttribute添加屬性)
3、創建和查找XmlNode以確保要放置的位置,將XmlElement添加到XmlNode中
4、如果沒有通過SetAttribute來添加屬性,後面可以創建XmlArribute來完成屬性的添加
5、最後重新保存Xml:XmlDocument.save(xpath);
上面是自己的一些見解,如果有上面不對的地方,希望大家指出改正