1. 程式人生 > >C#操作XML方法集合

C#操作XML方法集合

* 1 XMLElement 主要是針對節點的一些屬性進行操作
* 2 XMLDocument 主要是針對節點的CUID操作
* 3 XMLNode 為抽象類,做為以上兩類的基類,提供一些操作節點的方法

清楚了以上的關係在操作XML時會更清晰一點

二 具體操作(C#)

  以下會對Xml的結點與屬性做增 刪 改 查的操作也滿足了實際工作中的大部分情況 

先構造一棵XML樹如下,其中也涉及到了寫入xml文件的操作

複製程式碼
 1         public void CreatXmlTree(string xmlPath)
 2         {
 3             XElement xElement = new
XElement( 4 new XElement("BookStore", 5 new XElement("Book", 6 new XElement("Name", "C#入門", new XAttribute("BookName", "C#")), 7 new XElement("Author", "Martin", new XAttribute("Name", "Martin")), 8 new
XElement("Adress", "上海"), 9 new XElement("Date", DateTime.Now.ToString("yyyy-MM-dd")) 10 ), 11 new XElement("Book", 12 new XElement("Name", "WCF入門", new XAttribute("BookName", "WCF")), 13 new
XElement("Author", "Mary", new XAttribute("Name", "Mary")), 14 new XElement("Adress", "北京"), 15 new XElement("Date", DateTime.Now.ToString("yyyy-MM-dd")) 16 ) 17 ) 18 ); 19 20 //需要指定編碼格式,否則在讀取時會拋:根級別上的資料無效。 第 1 行 位置 1異常 21 XmlWriterSettings settings = new XmlWriterSettings(); 22 settings.Encoding = new UTF8Encoding(false); 23 settings.Indent = true; 24 XmlWriter xw = XmlWriter.Create(xmlPath,settings); 25 xElement.Save(xw); 26 //寫入檔案 27 xw.Flush(); 28 xw.Close(); 29 }
複製程式碼

然後得到如下的XML樹

複製程式碼
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <BookStore>
 3     <Book>
 4         <Name BookName="C#">C#入門</Name>
 5         <Author Name="Martin">Martin</Author>
 6         <Date>2013-10-11</Date>
 7         <Adress>上海</Adress>
 8         <Date>2013-10-11</Date>
 9     </Book>
10     <Book>
11         <Name BookName="WCF">WCF入門</Name>
12         <Author Name="Mary">Mary</Author>
13         <Adress>北京</Adress>
14         <Date>2013-10-11</Date>
15     </Book>
16 </BookStore>
複製程式碼

以下操作都是對生成的XML樹進行操作

2.1 新增節點與屬性

新增節點NewBook並增加屬性Name="WPF"

複製程式碼
 1         public void Create(string xmlPath)
 2         {
 3             XmlDocument xmlDoc = new XmlDocument();
 4             xmlDoc.Load(xmlPath);
 5             
 6             var root = xmlDoc.DocumentElement;//取到根結點
 7             XmlNode newNode = xmlDoc.CreateNode("element", "NewBook", "");
 8             newNode.InnerText = "WPF";
 9 
10             //新增為根元素的第一層子結點
11             root.AppendChild(newNode);
12             xmlDoc.Save(xmlPath);
13         }
複製程式碼

 開篇有寫操作xml節點屬性主要用XmlElement物件所以取到結點後要轉型別 

複製程式碼
 1         //屬性
 2         public void CreateAttribute(string xmlPath)
 3         {
 4             XmlDocument xmlDoc = new XmlDocument();
 5             xmlDoc.Load(xmlPath);
 6             var root = xmlDoc.DocumentElement;//取到根結點
 7             XmlElement node = (XmlElement)xmlDoc.SelectSingleNode("BookStore/NewBook");
 8             node.SetAttribute("Name", "WPF");
 9             xmlDoc.Save(xmlPath);
10 
11         }
複製程式碼

 效果如下

2.2 刪除節點與屬性

複製程式碼
 1         public void Delete(string xmlPath)
 2         {
 3             XmlDocument xmlDoc = new XmlDocument();
 4             xmlDoc.Load(xmlPath);
 5             var root = xmlDoc.DocumentElement;//取到根結點
 6 
 7             var element = xmlDoc.SelectSingleNode("BookStore/NewBook");
 8             root.RemoveChild(element);
 9             xmlDoc.Save(xmlPath);
10         }
複製程式碼

刪除屬性

複製程式碼
 1         public void DeleteAttribute(string xmlPath)
 2         {
 3             XmlDocument xmlDoc = new XmlDocument();
 4             xmlDoc.Load(xmlPath);
 5             XmlElement node = (XmlElement)xmlDoc.SelectSingleNode("BookStore/NewBook");
 6             //移除指定屬性
 7             node.RemoveAttribute("Name");
 8             //移除當前節點所有屬性,不包括預設屬性
 9             //node.RemoveAllAttributes();
10             xmlDoc.Save(xmlPath);
11         }
複製程式碼

2.3 修改節點與屬性

   xml的節點預設是不允許修改的,本文也就不做處理了

  修改屬性程式碼如下

複製程式碼
1         public void ModifyAttribute(string xmlPath)
2         {
3             XmlDocument xmlDoc = new XmlDocument();
4             xmlDoc.Load(xmlPath);
5             XmlElement element = (XmlElement)xmlDoc.SelectSingleNode("BookStore/NewBook");
6             element.SetAttribute("Name", "Zhang");
7             xmlDoc.Save(xmlPath);
8         }
複製程式碼

效果如下

2.4 獲取節點與屬性

複製程式碼
 1         public void Select(string xmlPath)
 2         {
 3             XmlDocument xmlDoc = new XmlDocument();
 4             xmlDoc.Load(xmlPath);
 5             //取根結點
 6             var root = xmlDoc.DocumentElement;//取到根結點
 7             //取指定的單個結點
 8             XmlNode oldChild = xmlDoc.SelectSingleNode("BookStore/NewBook");
 9             
10             //取指定的結點的集合
11             XmlNodeList nodes = xmlDoc.SelectNodes("BookStore/NewBook");
12 
13             //取到所有的xml結點
14             XmlNodeList nodelist = xmlDoc.GetElementsByTagName("*");
15         }
複製程式碼

屬性

複製程式碼
1         public void SelectAttribute(string xmlPath)
2         {
3             XmlDocument xmlDoc = new XmlDocument();
4             xmlDoc.Load(xmlPath);
5             XmlElement element = (XmlElement)xmlDoc.SelectSingleNode("BookStore/NewBook");
6             string name = element.GetAttribute("Name");
7             Console.WriteLine(name);
8         }
複製程式碼

三  具體操作 (linq to XML)

 Linq to Xml 也沒什麼變化只操作物件改變了主要涉及的幾個物件如下   注:我並沒有用linq的語法去操作元素

XDocument:用於建立一個XML例項文件

XElement:用於一些節點與節點屬性的基本操作

以下是對Xml的 一些簡單的操作

3.1 新增節點與屬性

複製程式碼
1         public void Create(string xmlPath)
2         {
3             XDocument xDoc = XDocument.Load(xmlPath);
4             XElement xElement = xDoc.Element("BookStore");
5             xElement.Add(new XElement("Test", new XAttribute("Name", "Zery")));
6             xDoc.Save(xmlPath);
7         }
複製程式碼

屬性

複製程式碼
 1         public void CreateAttribute(string xmlPath)
 2         {
 3             XDocument xDoc = XDocument.Load(xmlPath);
 4             IEnumerable<XElement> xElement = xDoc.Element("BookStore").Elements("Book");
 5             foreach (var element in xElement)
 6             {
 7                 element.SetAttributeValue("Name", "Zery");
 8             }
 9             xDoc.Save(xmlPath);
10         }
複製程式碼

3.2 刪除節點與屬性

複製程式碼
1         public void Delete(string xmlPath)
2         {
3             XDocument xDoc = XDocument.Load(xmlPath);
4             XElement element = (XElement)xDoc.Element("BookStore").Element("Book");
5             element.Remove();
6             xDoc.Save(xmlPath);
7         }
複製程式碼

屬性

複製程式碼
1         public void DeleteAttribute(string xmlPath)
2         {
3             XDocument xDoc = XDocument.Load(xmlPath);
4             //不能跨級取節點
5             XElement element = xDoc.Element("BookStore").Element("Book").Element("Name");
6             element.Attribute("BookName").Remove();
7             xDoc.Save(xmlPath);
8         }
複製程式碼

3.3 修改節點屬性

節點.net沒提供修改的方法本文也不做處理

修改屬性與新增實質是同一個方法

相關推薦

C#操作XML方法集合

* 1 XMLElement 主要是針對節點的一些屬性進行操作 * 2 XMLDocument 主要是針對節點的CUID操作 * 3 XMLNode 為抽象類,做為以上兩類的基類,提供一些操作節點的方法 清楚了以上的關係在操作XML時會更清晰一點 二 具體操

C#】C#操作XML方法:新增、修改和刪除節點與屬性

 一 前言 先來了解下操作XML所涉及到的幾個類及之間的關係  如果大家發現少寫了一些常用的方法,麻煩在評論中指出,我一定會補上的!謝謝大家 * 1 XMLElement 主要是針對節點的一些屬性進行操作 * 2 XMLDocument 主要是針對節點的CUID操作 *

C#操作Xml

技術 class 兩個 lar ade rabl 顯示 ... 3.1 ML文件是一種常用的文件格式,例如WinForm裏面的app.config以及Web程序中的web.config文件,還有許多重要的場所都有它的身影。Xml是Internet環境中跨平臺的,依賴於內容的

C#操作Xml文件(刪除)

list 導入 adk new key 操作xml log string void 步驟如下: 1、導入命名空間 system.Xml。 2、創建Xml文檔。 3、加載要讀取的xml文件。 4、SelectSingleNode()進行選中節點。 例子練習。 static

c# 操作XML

code eap spa nod 技術分享 deb write span foreach 實例:增刪改查 using System; using System.Collections.Generic; using System.Text; using System.Xml

C#】C# 操作XML

private void addBugCommentToDB(string header, string text) { string xmlContent = myManageDB.getDataFromCell("bugComment", "BugManage

c# 操作xml檔案,新增、刪除節點

/// <summary> /// 刪除當前選擇節點 /// </summary> /// <param name="sender"></param>

C#操作字串方法總結

staticvoid Main(string[] args) { string s =""; //(1)字元訪問(下標訪問s[i]) s =“ABCD”; Console.WriteLine(s[0]); // 輸出"A"; Console.WriteLine(s.Length); // 輸

VS 2005 C#操作 XML 收藏

XML大家一定都很熟悉了,根據前一陣做專案總結出的經驗,寫一篇關於在VS 2005下操作XML的文章,語言使用C#準備工作要新增的名稱空間為 System.Xml  System.Xml.XPath第一章 在記憶體裡建立Xml物件有時候我們可能需要根據資料庫裡的資料值生成Xm

Vs2017 C#操作xml(1)

前言: 許多有資料儲存要求的場合我們第一個想到的就是資料庫或者利用序列化來儲存成為檔案,實際上上面兩種方法都略顯麻煩,其實我們有更好的選擇,那就是用xml檔案來實現資料儲存和呼叫。 本教程主要講解如何用C#來操作xml,所以你必須先具備xml語言的基礎知識(如果你對此不熟悉那麼可以到網上

C#操作Xml:通過XmlDocument讀寫Xml文件

轉自:http://www.cnblogs.com/yukaizhao/archive/2011/07/19/csharp_xmldocument_access_xml.html Xml是擴充套件標記語言的簡寫,是一種開發的文字格式。關於它的更多情況可以通過

C++ 操作XML的完整例子——MSXML篇

寫本文的目的是為了方便大家瞭解C++ MSXML操作方法。 當然,C++中對MSXML的呼叫有多種,本文采用的方法是完全參照MSXML SDK提供的文件進行操作。 如果有什麼錯誤,歡迎指正。 程式碼框架是基於vs2008 MFC 對話方塊程式(UNICODE)。對話方塊程

C#操作XML的完整例子——XmlDocument篇

{                xmldoc.Load("Books.xml");                root = xmldoc.DocumentElement;                //---  新建一本書開始 ----                theBook = xmldoc

c#操作XML(讀XML,寫XML,更新,刪除節點,與dataset結合等)

我用的是一種很笨的方法,但可以幫助初學者瞭解訪問XML節點的過程。已知有一個XML檔案(bookstore.xml)如下:Corets, Eva5.951、插入節點往節點中插入一個節點: XmlDocument xmlDoc=new XmlDocument();xmlDoc.

C#對XML文件的各種操作方法

C# XML文件的各種操作方法 內容來自越康體育分享。 XML:Extensible Markup Language(可擴展標記語言)的縮寫,是用來定義其它語言的一種元語言,其前身是SGML(Standard Generalized Markup Language,標準通用標

C#學習筆記(12)——三種方法操作XML

結點 記得 ext 應用程序 eval 資源 特性 pla cells 說明(2017-7-11 16:56:13): 原文地址: C#中常用的幾種讀取XML文件的方法 XML文件是一種常用的文件格式,例如WinForm裏面的app.config以及Web程序中的web.c

C#中foreach出現“集合已修改 可能無法執行列舉操作”的解決方法

不要在列舉集合的操作(例如foreach)中去執行修改集合的操作。很多文章中提出解決方法是將foreach改為for迴圈,這裡記錄一種簡便方法。如果需要修改集合,那麼你應該先使用 ToArray() 方法,例如?1234foreach (var x in Mylist.ToA

C#操作Access時Parameters集合的使用方法

按照C#操作Sql Server資料庫的方式是不一樣的,使用時發現佔位符資料會混亂。 查閱相關資料及測試後,總結出這樣一套使用方法。 方法: public bool TsqlExecute

C# 文件操作常用方法總結

arch 擴展 追加 內容 cto 源文件 pen only lin 需引用  System.IO Path為絕對路徑 檢測指定目錄是否存在  Directory.Exists(Path) 創建目錄  Directory.CreateDirectory(Path

C#操作字符串方法總結<轉>

字符串結束 訪問 pad 刪除 大寫 替換字符 replace 字符數 對齊 C#操作字符串方法總結 staticvoid Main(string[] args){ string s =""; //(1)字符訪問