XML文件的寫,集合XML序列化(寫)。XML文件的讀,遞歸遍歷


XML文件:必須要有一個節點。檢驗xml文件,可以用瀏覽器打開,能打開表示對,否則錯。

處理方法:

DOM:XmlDocument文檔對象模型

Sax(事件驅動,XmlReader)

XmlSerializer(序列化):可以序列化一個類,一個泛型集合。

Linq to XML:主要用到類:Xelement XDocument XAttribute    using System.Xml.Linq;

一個XML文件:

學校,班級,學生(性別,年齡,年齡)

 

 1 namespace W_R_XML_Model
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {//創建文檔
 7             XDocument xdoc=new XDocument();
 8             //此文檔必須包含一個根節點,節點名為()內的名字,並不是變量名。
 9             XElement xx=new XElement("xuexiao");
10             xdoc.Add(xx);
11             //創建節點
12             XElement xbanji=new XElement("banji");
13             XElement xxuesheng=new XElement("xuesheng");
14             XElement xxingming=new XElement("xingming");
15             XElement xxingbie=new XElement("xingbie");
16             XElement xgender=new XElement("gender");
17             //根據哪些節點在哪個節點下,添加節點.同一級別的節點可以以數組形式一塊添加到父節點 add,添加屬性也是add,不過先newXAttribute
18             xxuesheng.Add(xxingming,xxingbie,xgender);
19             xbanji.Add(xxuesheng);
20             xx.Add(xbanji);
21             //為節點賦值 .value
22             //xxuesheng.Value = "李可";
23             xxingming.Value = "李可";
24             xxingbie.Value = "";
25             xgender.Value = "23";
26             //為節點添加屬性,先創建屬性XAttribute
27             XAttribute xuexiaoAttribute=new XAttribute("id",00001);
28             xx.Add(xuexiaoAttribute);
29             XAttribute banjiAttribute=new XAttribute("id",02);
30             xbanji.Add(banjiAttribute);
31             XAttribute xueshengAttribute=new XAttribute("id",024);
32             xxuesheng.Add(xueshengAttribute);
33 
34             //保存文件
35             xdoc.Save("lizi.xml");
36         }
37     }
38 }

 

 

序列化(把泛型集合寫一個xml文件):常常導出數據庫為XMl文檔的方法,可以先建立一個集合。但是此種方法,一次性將所有數據添加到list內存,數據大的時候就用XmlReader,和XmlWriter。

 1 namespace W_R_XML_Model
 2 {
 3     //先標記,再public
 4     [Serializable]
 5     public class onePerson
 6     {
 7         public string Name { get; set; }
 8         public int Age { get; set; }
 9         public char Gender { get; set; }
10     }
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             List<onePerson> list = new List<onePerson>//集合初始化器可以省去()
16             {
17                 new onePerson {Name = "李可", Age = 18, Gender = ''},//對象初始化器可以省去()
18                 new onePerson {Name = "小翠", Age = 20, Gender = ''},
19                 new onePerson {Name = "小紅", Age = 17, Gender = ''}
20             };
21             //把這個泛型集合序列化成XML格式的文件
22             using (FileStream file = new FileStream("lisxm.xml", FileMode.Create, FileAccess.Write))
23             {
24                 //找一個人來序列化 參數 序列化的類型,
25                 XmlSerializer serializer = new XmlSerializer(typeof(List<onePerson>));
26                 //序列化的對象和目的文件流
27                 serializer.Serialize(file, list);
28             }
29         }
30     }
31 }

男女對應的unicode代碼30007,22899

 

取XML文檔;

獲得文檔。XDocment.Load(路徑)

獲得根節點下的所有子節點。Xelement.root

循環子節點,獲得子節點下的子節點。

 1 namespace W_R_XML_Model
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {//獲得文檔
 7             XDocument xDocument = XDocument.Load("xmllianxi.xml");
 8             //獲得該文檔的根節點
 9             XElement xroot= xDocument.Root;
10            // 將根節點帶入遍歷函數
11            fun(xroot);
12            Console.ReadKey();
13         }
14         public static void fun(XElement eles)
15         {//eles.elements一個節點的下的節點集合,並一個一個查看,比如根節點下的幾個節點
16             foreach (var eleVar in eles.Elements())
17             {//如果這些集合元素還有子節點hasElements,則繼續將此幾點遞歸查詢,直到沒有子節點
18                 if (eleVar.HasElements)
19                 { 
20                     fun(eleVar);
21                 }
22                 else
23                 {
24                     Console.WriteLine(eleVar.Value);
25                 }
26             }
27         }
28     }


免責聲明!

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



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