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

            }

 

你可能感兴趣的:(document)