zoukankan      html  css  js  c++  java
  • xml序列化

      经常使用XML做接口,而解析XML有的时候也比较麻烦,最近用了一个新的解析方法,用序列化的方式来解析!

    1,如有下面这样一个xml文件,如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <ns2:Student xmlns:ns2="http://v3.hotel.wsapi.ean.com/" hotelId="117548">
       <Name>小强</Name>
        <!-- 性别-->
        <Sex>男</Sex>
        <!-- 年龄-->
        <Age>20</Age>
        <!-- 课程集合-->
        <Courses>
            <!-- 课程-->
           <Course>
                <!-- 课程名称-->
                <CourseName>英语</CourseName>
                <!-- 课程分数-->
                <Grade>92</Grade>
                <!-- 课程描述-->
                <CourseDescription>英语是一门全球应用最广泛的语言</CourseDescription>
              
        </Course>
            <Course>
              <CourseName>数学</CourseName>
              <Grade>98</Grade>
              <CourseDescription>俗话说学好数理化走遍天下都不怕</CourseDescription>
              
        </Course>
          
      </Courses>
      
    </ns2:Student>

    这是一个比较简单的xml了,如何用序列化呢?,

    一,我们先建一个序列化类,类名为Student,这个类名不是随便起的,要和xml文件的根节点名一样,我这个根节点前加了一个ns2:下面说,这是为什么?

     Student类如下:

     
     [Serializable]
       public  class Student
        {
            private string _name;
    
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
            //性别
            private string _sex;
            public string Sex
            {
                get { return _sex; }
                set { _sex = value; }
            }
            //年龄
            private int _age;
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }
            private Course[] _courses;
    
            public Course[] Courses
            {
                get { return _courses; }
                set { _courses = value; }
            }
        }

      

    这个类里面的第一个属性都和 xml文件Student根节点下的节点名一样,记住一定要一样!

    在Student类里面有一个有一个Course[]数组,名为Courese的属性,为什么要定义一个这样的数组属性呢?

    我们先看看我们上面的 xml文件,在xml文件的Student的根节点下有一个Courese节点,所以我们就要起一个Courese的属性名,

    而Courese根节点下面又有两个同样的Course节点,所以这个属性就要定义成一个Course[] 数组类型的属性了!

    Course类如下

     [Serializable]
       public class Course
       {
           //科目名称
           private string _coursename;
           public string CourseName
           {
               get { return _coursename; }
               set { _coursename = value; }
           }
           //科目分数
           private int _grade;
           public int Grade
           {
               get { return _grade; }
               set { _grade = value; }
           }
           //科目描述
           private string _coursedescription;
           public string CourseDescription
           {
               get { return _coursedescription; }
               set { _coursedescription = value; }
           }
        }
    这样类写完了,

    protected void Button2_Click(object sender, EventArgs e)
            {
    
              
    
                string temp = HttpContext.Current.Server.MapPath("ccc.xml");
                StreamReader sr = null;
                string str = "";
                sr = new StreamReader(temp, Encoding.UTF8);
                str = sr.ReadToEnd();
                str = str.Replace("ns2:", string.Empty);
    
                HotelPaymentResponse Model = XmlDeserialize<HotelPaymentResponse>(str, Encoding.UTF8);
    
               
            }

    这样就把一个类xml转换成一个对象了!

  • 相关阅读:
    CSU1018: Avatar
    ZOJ
    HDU—4463 Outlets 最小生成树
    查询文件中值所在的路径
    mysql语句查询时间检测
    phpmyadmin修改root密码
    检测Linux glibc幽灵漏洞和修补漏洞
    监控宝安装手册
    ubuntu安装环境软件全文档
    ubuntu mysql主从库的搭建
  • 原文地址:https://www.cnblogs.com/xu3593/p/3269997.html
Copyright © 2011-2022 走看看