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);

 

上面是自己的一些見解,如果有上面不對的地方,希望大家指出改正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章