zoukankan      html  css  js  c++  java
  • XML的解析和保存

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

     --------------------------

    XmlDocument dom=new XmlDocument();
    dom.LoadXml(字符串);
    dom.save(文件名);

    转载自:http://www.cnblogs.com/dedeyi/archive/2012/07/08/2582005.html

  • 相关阅读:
    单片机数字滤波的算法!
    Python中列表的兄弟
    史上最全的Python程序员面试必备常用问题
    新人在学习web前端的容易踩哪些坑?
    linux+arm系统学习与基础学习
    C和C++笔记:动态内存管理
    Python 爬虫干货之urllib库
    单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系!
    单片机死机了怎么办?
    单片机各种复位电路原理
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/5686417.html
Copyright © 2011-2022 走看看