Xml文档添加节点和属性
? 在實際的應用開發中需要我們對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);
?
上面是自己的一些見解,如果有上面不對的地方,希望大家指出改正...
?
轉載于:https://www.cnblogs.com/shuang121/archive/2011/02/24/1963796.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Xml文档添加节点和属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高等数学(第七版)同济大学 习题1-4
- 下一篇: PASCAL不仅仅是语言