1、XML(extensible markup language;XML )
定義:,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
XML語法規范: 標簽(Tag)、嵌套(Nest)、屬性(Attribute) [標簽閉合、屬性雙引號、大小寫敏感]
XML結構:父節點、子節點、兄弟節點
常見方法:DOM(文檔對象模型)、Sax(事件驅動、XmlTextReader)、XmlSerializer(序列化)、Linq to XML
常用類型:XElement、XDocument、XAttribute
2、使用代碼編寫XML文件
[1]、注意:(1)、需要.Net Framework 3.5版本才能使用XDocument對象。
(2)、XDOcument類相比於XmlDocument類,配合Linq使用更方便
[2]、創建XML文檔:
new XDocument對象
創建一個根節點XElement:構造方法中定義節點名字
加到XML文檔中:Add() 方法
文檔保存:Save() 方法
添加屬性:new 一個Attribute、Add上
添加節點:new一個Element、可以設定Value給定值
[3]、讀取XML文件
加載文檔:XDocument.Load()方法
獲取根節點:Root屬性
元素簽名與值(所以):Name、value屬性
獲取直接子元素:Element方法與Elements方法
讀取屬性:Attribute方法與Attributes方法,使用value
獲取所以子節點:遞歸
實例1:
//創建Xdocument對象 XDocument xDoc = new XDocument(); //創建一個根節點,定義節點名字Student XElement xEle = new XElement("Student"); //加載到XML文檔 xDoc.Add(xEle); //添加一個屬性值, XAttribute xAttr = new XAttribute("Id","101"); xEle.Add(xAttr); //添加節點 XElement xEleName = new XElement("Name","dede"); XElement xEleAge = new XElement("Age","23"); XElement xEleGender = new XElement("Gender","男"); xEle.Add(xEleName,xEleAge,xEleGender); xEleAge.Value = "22"; //保存文檔 xDoc.Save(@"d:\caoyi.xml");
*****************輸出的XML文檔************************* <?xml version="1.0" encoding="utf-8"?> <Student Id="101"> <Name>dede</Name> <Age>22</Age> <Gender>男</Gender> </Student> *******************************************************
//讀取XML文檔
XDocument XDoc2 = XDocument.Load(@"d:\caoyi.xml"); //獲取根節點 XElement Root = XDoc2.Root; //輸出根節點的Name,Value Console.WriteLine("Root.Name:{0}",Root.Name);//輸出:Student Console.WriteLine("Root.Value:{0}",Root.Value);//輸出:dede22男 Console.WriteLine("Root.ToString:{0}",Root.ToString());//輸出:節點下的整個XML //獲取子元素 XElement xEle1 =Root.Element("Name");//獲取子元素組 Console.WriteLine(xEle1.Value);//輸出:dede foreach (XElement ele in Root.Elements()) { Console.WriteLine("{0}-{1}",ele.Name,ele.Value); }
[3]、XML序列化
把對象序列化存儲在本地文件中,using System.Xml.Serialization;,對象標示[Serializable]
實例:
List<Person> perList = new List<Person>() { new Person(){ Name="張三1",Age=19, Gender='男'}, new Person(){ Name="張三2",Age=19, Gender='男'}, new Person(){ Name="張三3",Age=19, Gender='男'}, new Person(){ Name="張三4",Age=19, Gender='男'}, new Person(){ Name="張三5",Age=19, Gender='男'}, new Person(){ Name="張三6",Age=19, Gender='男'}, }; using (FileStream file = new FileStream("xml.xml", FileMode.Create, FileAccess.Write)) { XmlSerializer ser = new XmlSerializer(typeof(List<Person>)); ser.Serialize(file, perList); }