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);
}
