XDocument簡單入門


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

 


免責聲明!

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



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