当前位置导航:炫浪网>>网络学院>>网页制作>>XML/WebService教程

如何使用XmlSerializer类控制串行化

    人们一直高喊XML是解决系统互联问题的关键, 而.NET framework 也为处理XML数据提供了许多不同的类库. XmlDocument 类能让你像处理文件一样处理XML 数据, 而XmlReader, XmlWriter, 和它们的派生类使你能够将XML 数据做为数据流处理. XmlSerializer 则提供了另外的方法, 它使你能够将自己的对象串行和反串行化为XML. 串行化数据既能够让你像处理文件一样对数据进行随机存取, 同时又能够跳过你不感兴趣的元素. 在本文中, 我将向你展示如何使用XmlSerializer类以及如何在你的类中添加属性来控制串行化过程.

XmlSerializer
    XmlSerializer类存在于System.Xml.Serialization命名空间的System.Xml.dll中, 它用一种高度松散耦合的方式提供串行化服务. 你的类不需要继承特别的基类, 而且它们也不需要实现任何特别的接口. 相反的, 你只需要在你的类或者这些类的公共域以及读/写属性里加上自定义的属性. XmlSerializer 通过相反映射读取这些属性并用它们将你的类和类成员映射到XML元素和属性.

将XML 映射到对象
考虑表A中的XML语句, 哪一个正确的描述了一家电影院中上映的电影呢?

表A

<?xml version="1.0" encoding="utf-8" ?>
<theater>
 <name>The Camelot</name>
 <phone>(888)665-2222</phone>
 <movie minutes="120" stars="2">
  <title>The Score</title>
  <rating>R</rating>
  <showing>16:15:00</showing>
  <showing>19:05:00</showing>
  <showing>21:40:00</showing>
 </movie>
 <movie minutes="100">
  <title>Shrek</title>
  <rating>PG-13</rating>
  <showing>16:00:00</showing>
  <showing>19:00:00</showing>
  <showing>21:40:00</showing>
 </movie>
</theater>



表B中定义了一个Theater(电影院)类, 它包含了XmlSerializer使用的属性映射.

表B

using System;
using System.Xml.Serialization;

 namespace Articles.TechRepublic.XmlSerialization
{
    [XmlRoot( "theater" )]
    public class Theater
    {
        [XmlElement( "name" )]
        public string Name = "";

        [XmlElement( "phone" )]
        public string Phone = "";

        [XmlElement( "movie" )]
        public Movie[] Movies;

        public override string ToString()
        {
            string movies = "";
            if ( Movies != null )
                foreach ( Movie movie in Movies )
                    movies += " " + movie.ToString();

                    return String.Format( " ",
                    Name, Phone, movies );
        }
}

 


 

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接