• XML和XML序列化金典


    在我们讨论XML的用法之前,还是来看下XML的概念。

    XML Extensible  Markup  Language(可扩展标记语言),是W3C推荐的标准,用来传输和存储数据。XML应用非常广泛,是各种应用程序之间进行数据传输最常用的工具。.NET的核心就是XML,XML是微软.NET战略的一个重要组成部分,.NET框架(ASP.NET、Web Service等)都使用XML作为数据表现形式。

          接下来就XML的常用知识点我们做一个罗列。

     1,为什么学习XML

    XML具有易读、易用、结构化的特点,所以我们经常通过XML传输数据。

     2.XML语法规范

    标签(Tag):

    001.名称的开头必须是字母、”_”或“:”,但冒号不推荐使用。

        002.名称中不能含有空格。

    003.名称中还可以包含英文字母、数字、”_”、”-”和”.”.

    004.必须有根标记,且根标记必须唯一

    005.标签配对使用

    006.标签区分大小写
        嵌套(Nest):标记必须合理嵌套,不能交错使用。

        属性(Attribute)

        属性语法:属性名=”属性值”

     3.XML结构(XML树)

        类似于树状结构:XML可以具有父节点、子节点和兄弟节点。

     4.如何手写一个XML文件?

    首先,要对XML进行声明:<?xml  version=”1.0”  encoding=”gb2312”  ?>

    XML中注释:<!-- -->

    书写XML常用方法:

    1. 通过DOM方式(文档对象模型)
    2. Linq  to  XML

    其实两种方式大同小异,这里我们讨论通过Linq  to XML方式实现XML的书写。

     常用类型

        XElement、XDocument、XAttribute、XNode。

     使用代码写XML文件

    001.创建XML文档

            XDocument doc = new XDocument();

    002.创建一个根节点XElement,在构造方法中定义节点名字

    XElement xRoot = new XElement("root");

    003.加到XML文档中

    doc.Add(xRoot);

    004.添加属性

          //加班级属性

                XElement xClass = new XElement("class");

                XAttribute xDisplay = new XAttribute("display", ".NET");

                xClass.Add(xDisplay);

     

          //加学生属性

                XElement xPerson = new XElement("Person");

                XAttribute xP = new XAttribute("id", "0001");

                xPerson.Add(xP);

         005.添加节点

              //学生的各个数据

                XElement xName = new XElement("name");

                xName.Value = "李晓玲";

                XElement xAge = new XElement("age");

                xAge.Value = "18";

                XElement xGender = new XElement("gender");

                xGender.Value = "男";

     

                //加到对应的属性上去

                xPerson.Add(xName);

                xPerson.Add(xAge);

                xPerson.Add(xGender);

     

                xClass.Add(xPerson);

                xRoot.Add(xClass);

        006.通过Save方法保存数据

               doc.Save("MyFirst.xml");

    上面我们讲述了如何手写一个XML文件,接下来我们来看下如何读取XML文件

    5.读取XML文件

        01.加载文档

          通过XDocument.Load()方法

             XDocument doc= XDocument.Load("MyFirst.xml");

           02.获取根节点

                  通过Root属性

           XElement root= doc.Root;

          03.获取元素标签名与值

           foreach (XElement ele in root.Elements())

               {

                   string xClass = ele.Name.ToString();

                   string sid = ele.Attribute("display").Value;

                   Console.WriteLine("{0}{1}",xClass,sid);

                   foreach (XElement item in ele.Elements())

                   {

                       string xName = item.Name.ToString();

                       string id = item.Attribute("id").Value;

                       string name = item.Element("name").Value;

                       string age = item.Element("age").Value;

                       string gender = item.Element("gender").Value;

                       Console.WriteLine("{0}{1}{2}{3}{4}\t",xName,id,name,age,gender);

     

                   }

               }

         6.XML序列化

      那么如何将内存中的对象序列化成XML文件呢?

      我们可以使用XML序列化器,首先要引入命名空间,

    using System.Xml.Serialization;

      如下是生成将一个List<Person>序列化成XML文件的代码

         private void button1_Click(object sender, EventArgs e)

            {

                List<Person> list = new List<Person>();

                list.Add(new Person("成龙",18,'男'));

                list.Add(new Person("李小龙",25,'男'));

                list.Add(new Person("巩俐",30,'女'));

                //下面开始序列化

                XmlSerializer xml = new XmlSerializer(typeof(List<Person>));

                FileStream fs = new FileStream("Weilengdeyu.xml",FileMode.OpenOrCreate);

                xml.Serialize(fs, list);

     

            }

     

            private void Form1_Load(object sender, EventArgs e)

            {

               // MessageBox.Show(typeof(List<Person>).ToString());

            }

        }

        [Serializable]

        public class Person

        {

            public Person(string name, int age, char gender)

            {

                this.name = name;

                this.age = age;

                this.gender = gender;

            }

            public Person()

            {

     

            }

            private char gender;

     

            public char Gender

            {

                get { return gender; }

                set { gender = value; }

            }

            private int age;

     

            public int Age

            {

                get { return age; }

                set { age = value; }

            }

            private string name;

     

            public string Name

            {

                get { return name; }

                set { name = value; }

            }

      7.最后给大家贡献一张X-DOM核心图

  • 相关阅读:
    idea打包jar部署Linux出现乱码
    HTML元素刷新方式
    Linux中Jar启动与停止
    Win10开机自启软件设置
    java后台数据传输到前端少一天,8小时
    mysql字符串提取数组排序
    maven 配置文件
    mac docker安装jupyter notebook镜像
    pycharm使用git
    github使用命令
  • 原文地址:https://www.cnblogs.com/weilengdeyu/p/2802631.html
Copyright © 2020-2023  润新知