C# xml文件的创建,修改和添加节点 。
最近在做一個項目,設計到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("節點名稱").這個節點名稱是他的路徑。若是根節點當時只寫名稱就可以了,若是子節點,則需要些明從根節點到它的路徑。 再就是遍歷xml文件,這個就不記錄了,上面這些操作會了,遍歷就不是問題了。
總結
以上是生活随笔為你收集整理的C# xml文件的创建,修改和添加节点 。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国际C语言混乱代码大赛结果公布
- 下一篇: OpenCL 与 CUDA