日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#操作XML小结

發布時間:2025/4/14 C# 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#操作XML小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、簡單介紹

?using System.Xml;

//初始化一個xml實例

XmlDocument xml=new XmlDocument();

?

//導入指定xml文件

?xml.Load(path);

?xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));

?

//指定一個節點

XmlNode root=xml.SelectSingleNode("/root");

?

//獲取節點下所有直接子節點

XmlNodeList childlist=root.ChildNodes;

?

//判斷該節點下是否有子節點

root.HasChildNodes;

?

//獲取同名同級節點集合

XmlNodeList nodelist=xml.SelectNodes("/Root/News");

?

?//生成一個新節點

?XmlElement node=xml.CreateElement("News");

?

?//將節點加到指定節點下,作為其子節點

?root.AppendChild(node);

?

//將節點加到指定節點下某個子節點前

root.InsertBefore(node,root.ChildeNodes[i]);

?

?//為指定節點的新建屬性并賦值

?node.SetAttribute("id","11111");

?

//為指定節點添加子節點

root.AppendChild(node);

?

//獲取指定節點的指定屬性值

string id=node.Attributes["id"].Value;

?

//獲取指定節點中的文本

string content=node.InnerText;

?

//保存XML文件 string path=Server.MapPath("~/file/bookstore.xml");

?

xml.Save(path); //or use :xml.Save(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));

?

二、具體實例

在C#.net中如何操作XML
需要添加的命名空間:
using System.Xml;

1、創建到服務器同名目錄下的xml文件:

方法一:

?

  • XmlDocument?xmldoc;??
  • ????????????XmlNode?xmlnode;??
  • ????????????XmlElement?xmlelem;??
  • ????????????xmldoc?=?new?XmlDocument();??
  • ????????????//加入XML的聲明段落,<?xml?version="1.0"?encoding="gb2312"?>??
  • ????????????XmlDeclaration?xmldecl;??
  • ????????????xmldecl?=?xmldoc.CreateXmlDeclaration("1.0",?"gb2312",?null);??
  • ????????????xmldoc.AppendChild(xmldecl);??
  • ????????????//加入一個根元素??
  • ????????????xmlelem?=?xmldoc.CreateElement("",?"Employees",?"");??
  • ????????????xmldoc.AppendChild(xmlelem);??
  • ????????????//加入另外一個元素??
  • ????????????for?(int?i?=?1;?i?<?3;?i++)??
  • ????????????{??
  • ????????????????XmlNode?root?=?xmldoc.SelectSingleNode("Employees");// 查找<Employees>??
  • ????????????????XmlElement?xe1?=?xmldoc.CreateElement("Node");//創建一個<Node>節點??
  • ????????????????xe1.SetAttribute("genre",?"李贊紅");//設置該節點genre屬性??
  • ????????????????xe1.SetAttribute("ISBN",?"2-3631-4");// 設置該節點ISBN屬性??
  • ????????????????XmlElement?xesub1?=?xmldoc.CreateElement("title");??
  • ????????????????xesub1.InnerText?=?"CS從入門到精通";//設置文本節點??
  • ????????????????xe1.AppendChild(xesub1);//添加到<Node>節點中??
  • ????????????????XmlElement?xesub2?=?xmldoc.CreateElement("author");??
  • ????????????????xesub2.InnerText?=?"候捷";??
  • ????????????????xe1.AppendChild(xesub2);??
  • ????????????????XmlElement?xesub3?=?xmldoc.CreateElement("price");??
  • ????????????????xesub3.InnerText?=?"58.3";??
  • ????????????????xe1.AppendChild(xesub3);??
  • ????????????????root.AppendChild(xe1);//添加到<Employees>節點中??
  • ????????????}??
  • ????????????//保存創建好的XML文檔??
  • ????????????xmldoc.Save("data.xml");???
  • 方法二:

    view plaincopy to clipboardprint?
  • XmlTextWriter?xmlWriter;??
  • ????????????string?strFilename?=?"data1.xml";??
  • ????????????xmlWriter?=?new?XmlTextWriter(strFilename,?Encoding.Default);//創建一個xml文檔??
  • ????????????xmlWriter.Formatting?=?Formatting.Indented;??
  • ????????????xmlWriter.WriteStartDocument();??
  • ????????????xmlWriter.WriteStartElement("Employees");??
  • ????????????xmlWriter.WriteStartElement("Node");??
  • ????????????xmlWriter.WriteAttributeString("genre",?"李贊紅");??
  • ????????????xmlWriter.WriteAttributeString("ISBN",?"2-3631-4");??
  • ????????????xmlWriter.WriteStartElement("title");??
  • ????????????xmlWriter.WriteString("CS 從入門到精通");??
  • ????????????xmlWriter.WriteEndElement();??
  • ????????????xmlWriter.WriteStartElement("author");??
  • ????????????xmlWriter.WriteString("候捷");??
  • ????????????xmlWriter.WriteEndElement();??
  • ????????????xmlWriter.WriteStartElement("price");??
  • ????????????xmlWriter.WriteString("58.3");??
  • ????????????xmlWriter.WriteEndElement();??
  • ????????????xmlWriter.WriteEndElement();??
  • ????????????xmlWriter.Close();??
  • XmlTextWriter xmlWriter; string strFilename = "data1.xml"; xmlWriter = new XmlTextWriter(strFilename, Encoding.Default);//創建一個xml文檔 xmlWriter.Formatting = Formatting.Indented; xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("Employees"); xmlWriter.WriteStartElement("Node"); xmlWriter.WriteAttributeString("genre", "李贊紅"); xmlWriter.WriteAttributeString("ISBN", "2-3631-4"); xmlWriter.WriteStartElement("title"); xmlWriter.WriteString("CS從入門到精通"); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("author"); xmlWriter.WriteString("候捷"); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("price"); xmlWriter.WriteString("58.3"); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.Close();

    ?

    2、添加一個結點

    view plaincopy to clipboardprint?
  • XmlDocument?xmlDoc?=?new?XmlDocument();??
  • ???????????xmlDoc.Load("data.xml");??
  • ???????????XmlNode?root?=?xmlDoc.SelectSingleNode("Employees");// 查找<Employees>??
  • ???????????XmlElement?xe1?=?xmlDoc.CreateElement("Node");//創建一個<Node>節點??
  • ???????????xe1.SetAttribute("genre",?"張三");//設置該節點genre屬性??
  • ???????????xe1.SetAttribute("ISBN",?"1-1111-1");// 設置該節點ISBN屬性??
  • ???????????XmlElement?xesub1?=?xmlDoc.CreateElement("title");??
  • ???????????xesub1.InnerText?=?"C#入門幫助";//設置文本節點??
  • ???????????xe1.AppendChild(xesub1);//添加到<Node>節點中??
  • ???????????XmlElement?xesub2?=?xmlDoc.CreateElement("author");??
  • ???????????xesub2.InnerText?=?"高手";??
  • ???????????xe1.AppendChild(xesub2);??
  • ???????????XmlElement?xesub3?=?xmlDoc.CreateElement("price");??
  • ???????????xesub3.InnerText?=?"158.3";??
  • ???????????xe1.AppendChild(xesub3);??
  • ???????????root.AppendChild(xe1);// 添加到<Employees>節點中??
  • ???????????xmlDoc.Save("data.xml");??
  • XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("data.xml"); XmlNode root = xmlDoc.SelectSingleNode("Employees");//查找<Employees> XmlElement xe1 = xmlDoc.CreateElement("Node");//創建一個<Node>節點 xe1.SetAttribute("genre", "張三");//設置該節點genre屬性 xe1.SetAttribute("ISBN", "1-1111-1");//設置該節點ISBN屬性 XmlElement xesub1 = xmlDoc.CreateElement("title"); xesub1.InnerText = "C#入門幫助";//設置文本節點 xe1.AppendChild(xesub1);//添加到<Node>節點中 XmlElement xesub2 = xmlDoc.CreateElement("author"); xesub2.InnerText = "高手"; xe1.AppendChild(xesub2); XmlElement xesub3 = xmlDoc.CreateElement("price"); xesub3.InnerText = "158.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<Employees>節點中 xmlDoc.Save("data.xml");

    ?

    3、修改結點的值(屬性和子結點)

    view plaincopy to clipboardprint?
  • XmlDocument?xmlDoc?=?new?XmlDocument();??
  • ???????????xmlDoc.Load("data.xml");??
  • ???????????XmlNodeList?nodeList?=?xmlDoc.SelectSingleNode("Employees").ChildNodes;//獲取Employees節點的所有子節點??
  • ???????????foreach?(XmlNode?xn?in?nodeList)// 遍歷所有子節點??
  • ???????????{??
  • ???????????????XmlElement?xe?=?(XmlElement)xn;//將子節點類型轉換為XmlElement類型??
  • ???????????????if?(xe.GetAttribute("genre")?==?"張三")//如果genre屬性值為“張三”??
  • ???????????????{??
  • ???????????????????xe.SetAttribute("genre",?"update 張三");//則修改該屬性為“update張三”??
  • ???????????????????XmlNodeList?nls?=?xe.ChildNodes;//繼續獲取xe子節點的所有子節點??
  • ???????????????????foreach?(XmlNode?xn1?in?nls)//遍歷??
  • ???????????????????{??
  • ???????????????????????XmlElement?xe2?=?(XmlElement)xn1;//轉換類型??
  • ???????????????????????if?(xe2.Name?==?"author")//如果找到??
  • ???????????????????????{??
  • ???????????????????????????xe2.InnerText?=?"亞勝";//則修改??
  • ???????????????????????}??
  • ???????????????????}??
  • ???????????????}??
  • ???????????}??
  • ???????????xmlDoc.Save("data.xml");//保存。??
  • XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("data.xml"); XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//獲取Employees節點的所有子節點 foreach (XmlNode xn in nodeList)//遍歷所有子節點 { XmlElement xe = (XmlElement)xn;//將子節點類型轉換為XmlElement類型 if (xe.GetAttribute("genre") == "張三")//如果genre屬性值為“張三” { xe.SetAttribute("genre", "update張三");//則修改該屬性為“update張三” XmlNodeList nls = xe.ChildNodes;//繼續獲取xe子節點的所有子節點 foreach (XmlNode xn1 in nls)//遍歷 { XmlElement xe2 = (XmlElement)xn1;//轉換類型 if (xe2.Name == "author")//如果找到 { xe2.InnerText = "亞勝";//則修改 } } } } xmlDoc.Save("data.xml");//保存。 ?

    ?

    ?

    4、修改結點(添加結點的屬性和添加結點的自結點)

    view plaincopy to clipboardprint?
  • XmlDocument?xmlDoc?=?new?XmlDocument();??
  • ????????????xmlDoc.Load("data.xml");??
  • ????????????XmlNodeList?nodeList?=?xmlDoc.SelectSingleNode("Employees").ChildNodes;//獲取Employees節點的所有子節點??
  • ????????????foreach?(XmlNode?xn?in?nodeList)??
  • ????????????{??
  • ????????????????XmlElement?xe?=?(XmlElement)xn;??
  • ????????????????xe.SetAttribute("test",?"111111");??
  • ????????????????XmlElement?xesub?=?xmlDoc.CreateElement("flag");??
  • ????????????????xesub.InnerText?=?"1";??
  • ????????????????xe.AppendChild(xesub);??
  • ????????????}??
  • ????????????xmlDoc.Save("data.xml");??
  • XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("data.xml"); XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//獲取Employees節點的所有子節點 foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; xe.SetAttribute("test", "111111"); XmlElement xesub = xmlDoc.CreateElement("flag"); xesub.InnerText = "1"; xe.AppendChild(xesub); } xmlDoc.Save("data.xml"); ?

    ?

    ?

    5、刪除結點中的某一個屬性

    view plaincopy to clipboardprint?
  • XmlDocument?xmlDoc?=?new?XmlDocument();??
  • ????????????xmlDoc.Load("data.xml");??
  • ????????????XmlNodeList?xnl?=?xmlDoc.SelectSingleNode("Employees").ChildNodes;??
  • ????????????foreach?(XmlNode?xn?in?xnl)??
  • ????????????{??
  • ????????????????XmlElement?xe?=?(XmlElement)xn;??
  • ????????????????xe.RemoveAttribute("genre");//刪除 genre屬性??
  • ????????????????XmlNodeList?nls?=?xe.ChildNodes;//繼續獲取xe子節點的所有子節點??
  • ????????????????foreach?(XmlNode?xn1?in?nls)//遍歷??
  • ????????????????{??
  • ????????????????????XmlElement?xe2?=?(XmlElement)xn1;//轉換類型??
  • ????????????????????if?(xe2.Name?==?"flag")//如果找到??
  • ????????????????????{??
  • ????????????????????????xe.RemoveChild(xe2);//則刪除??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}??
  • ????????????xmlDoc.Save("data.xml");???
  • XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("data.xml"); XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes; foreach (XmlNode xn in xnl) { XmlElement xe = (XmlElement)xn; xe.RemoveAttribute("genre");//刪除genre屬性 XmlNodeList nls = xe.ChildNodes;//繼續獲取xe子節點的所有子節點 foreach (XmlNode xn1 in nls)//遍歷 { XmlElement xe2 = (XmlElement)xn1;//轉換類型 if (xe2.Name == "flag")//如果找到 { xe.RemoveChild(xe2);//則刪除 } } } xmlDoc.Save("data.xml");

    ?

    ?

    6、刪除結點

    view plaincopy to clipboardprint?
  • XmlDocument?xmlDoc?=?new?XmlDocument();??
  • ????????????xmlDoc.Load("data.xml");??
  • ????????????XmlNode?root?=?xmlDoc.SelectSingleNode("Employees");??
  • ????????????XmlNodeList?xnl?=?xmlDoc.SelectSingleNode("Employees").ChildNodes;??
  • ????????????for?(int?i?=?0;?i?<?xnl.Count;?i++)??
  • ????????????{??
  • ????????????????XmlElement?xe?=?(XmlElement)xnl.Item(i);??
  • ????????????????if?(xe.GetAttribute("genre")?==?"張三")??
  • ????????????????{??
  • ????????????????????root.RemoveChild(xe);??
  • ????????????????????if?(i?<?xnl.Count)?i?=?i?-?1;??
  • ????????????????}??
  • ????????????}??
  • ????????????xmlDoc.Save("data.xml");???
  • XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("data.xml"); XmlNode root = xmlDoc.SelectSingleNode("Employees"); XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes; for (int i = 0; i < xnl.Count; i++) { XmlElement xe = (XmlElement)xnl.Item(i); if (xe.GetAttribute("genre") == "張三") { root.RemoveChild(xe); if (i < xnl.Count) i = i - 1; } } xmlDoc.Save("data.xml");

    ?

    ?

    7、按照文本文件讀取xml

    view plaincopy to clipboardprint?
  • System.IO.StreamReader?myFile?=?new?System.IO.StreamReader("data.xml",?System.Text.Encoding.Default);??
  • ????????????//注意 System.Text.Encoding.Default??
  • ????????????string?myString?=?myFile.ReadToEnd();//myString是讀出的字符串??
  • ????????????this.textBox1.Text?=?myString;??
  • ????????????myFile.Close();??
  • System.IO.StreamReader myFile = new System.IO.StreamReader("data.xml", System.Text.Encoding.Default); //注意System.Text.Encoding.Default string myString = myFile.ReadToEnd();//myString是讀出的字符串 this.textBox1.Text = myString; myFile.Close(); ?

    ?

    8、讀取xml

    view plaincopy to clipboardprint?
  • //創建 XmlDocument對象??
  • XmlDocument?xmlDoc?=?new?XmlDocument();??
  • //載入xml文件名??
  • xmlDoc.Load(filename);???
  • //如果是xml字符串,則用以下形式??
  • xmlDoc.LoadXml(xmldata);???
  • //讀取根節點的所有子節點,放到xn0中???
  • XmlNodeList?xn0?=?xmlDoc.SelectSingleNode("Document").ChildNodes;???
  • //查找二級節點的內容或屬性???
  • foreach?(XmlNode?node?in?xn0)??
  • {??
  • ????if?(node.Name?==?匹配的二級節點名)??
  • ????{??
  • ????????string?innertext?=?node.InnerText.Trim();//匹配二級節點的內容??
  • ????????string?attr?=?node.Attributes[0].ToString();//屬性??
  • ????}???
  • }???
  • ?基礎的操作就是這些,要是取三級或三級以上的節點,類似推導即可??

    轉載于:https://www.cnblogs.com/yinbo_crazy/archive/2010/07/31/1789301.html

    總結

    以上是生活随笔為你收集整理的C#操作XML小结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。