C# xml 創建 修改 新增


.NET Framework完全支持XML DOM模式,但它不支持SAX模式。.NET Framework支持兩種不同的分析模式:XML DOM分析器(XMLDocument類)和XML閱讀器(XMLTextReader類),不支持SAX分析器, 但這並不意味着它沒有提供類似SAX分析器的功能。通過XML閱讀器可以將SAX的所有的功能很容易的實現及更有效的運用。

但是我們一般運用最多的是DOM。

一、創建xml文件

        using System.Xml;
        using System.IO;//這個一定要寫

         XmlDocument xmlDoc = new XmlDocument();
            //加入XML的聲明段落,Save方法不再xml上寫出獨立屬性
            xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
           //加入根元素
   
            XmlElement root = xmlDoc.CreateElement("ROOT");
            xmlDoc.AppendChild(root);

            XmlElement memberlist = xmlDoc.CreateElement("MEMBERLIST");
          
            XmlElement memberA = xmlDoc.CreateElement("MEMBER");
            memberA.SetAttribute("AGE", ">=29");
            memberA.SetAttribute("SEX", "MALE");
            XmlElement zs = xmlDoc.CreateElement("NAME");
            zs.InnerText = "張三";
            XmlElement ls = xmlDoc.CreateElement("NAME");
            ls.InnerText = "李四";
            memberA.AppendChild(zs);
            memberA.AppendChild(ls);

            XmlElement memberB = xmlDoc.CreateElement("MEMBER");
            memberB.SetAttribute("AGE", ">=35");
            memberB.SetAttribute("SEX", "MALE");
            XmlElement ww = xmlDoc.CreateElement("NAME");
            ww.InnerText = "王五";
            XmlElement zl = xmlDoc.CreateElement("NAME");
            zl.InnerText = "趙六";
            memberB.AppendChild(ww);
            memberB.AppendChild(zl);

            memberlist.AppendChild(memberA);
            memberlist.AppendChild(memberB);
            root.AppendChild(memberlist);
            xmlDoc.Save(xmlpath);            
       

效果如下:

<?xml version="1.0" encoding="UTF-8"?>

<ROOT>
     <MEMBERLIST>
            <MEMBERAGE=">=29"SEX="MALE">
                      <NAME>李四</NAME>
                 *   <NAME/>                  
         </MEMBER>
            <MEMBERAGE=">=35"SEX="MALE">
                        <NAME>王五</NAME>
                        <NAME>趙六</NAME>
           </MEMBER>
    </MEMBERLIST>
</ROOT>
看上面成功倒是成功了,不過由於粗心,在*這行的NAME標簽出錯了。我想把第一個NAME改為張三,第二個NAME改為李四
二、修改xml文件
  c#代碼如下:
 XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlpath);
            XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
            XmlNodeList nodelist=memberlist.ChildNodes;
           // XmlNodeList nodelist=xmlDoc.GetElementsByTagName("MEMBER");
            foreach (XmlNode node in nodelist)
            {
                if (node.Attributes["AGE"].InnerText.ToString().Equals(">=29"))
                {
                    node.ChildNodes[0].InnerText = "張三";
                    node.ChildNodes[1].InnerText = "李四";
                    break;
                }
            }
            xmlDoc.Save(xmlpath);
            MessageBox.Show("保存成功");
xml效果如下:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
     <MEMBERLIST>
            <MEMBERAGE=">=29"SEX="MALE">
                      <NAME>張三</NAME>
                      <NAME>李四</NAME>                 
          </MEMBER>
            <MEMBERAGE=">=35"SEX="MALE">
                        <NAME>王五</NAME>
                        <NAME>趙六</NAME>
             </MEMBER>
         </MEMBERLIST>
  </ROOT>
這時候,如果增加人員的情況下,我還需要添加節點。
三、xml文件添加節點如下
c#代碼如下
 XmlDocument xmlDoc = new XmlDocument();
            if (File.Exists(xmlpath))
            {
                xmlDoc.Load(xmlpath);
                XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
                XmlElement member = xmlDoc.CreateElement("MEMBER");
                member.SetAttribute("AGE", "<29");
                member.SetAttribute("SEX", "MAIL");
                XmlElement lq = xmlDoc.CreateElement("NAME");
                lq.InnerText = "六七";
                member.AppendChild(lq);
                memberlist.AppendChild(member);
                xmlDoc.Save(xmlpath);
                MessageBox.Show("添加成功");
            }
            else
            {
                MessageBox.Show("文件不存在");
            }
效果如下:
<<ROOT>
     <MEMBERLIST>
            <MEMBERAGE=">=29"SEX="MALE">
                     <NAME>張三</NAME>
                     <NAME>李四</NAME>                 
          </MEMBER>
            <MEMBERAGE=">=35"SEX="MALE">
                       <NAME>王五</NAME>
                       <NAME>趙六</NAME>
             </MEMBER>
        <MEMBERAGE="<29" SEX="MALE">
                       <NAME>六七</NAME>
             </MEMBER>
         </MEMBERLIST>
< </ROOT>
 有幾點要記住了,XmlNode包含XmlElement,即XmlNode可以轉化為XmlElement而XmlElement不可以轉化為XmlNode.
xmDoc.selectSingleNode("節點名稱").這個節點名稱是他的路徑。若是根節點當時只寫名稱就可以了,若是子節點,則需要些明從根節點到它的路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM