亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#對象與XMl文件之間的相互轉換

2020-01-24 03:06:11
字體:
來源:轉載
供稿:網友

C#提供三種序列化方式,分別為:
1、是使用BinaryFormatter進行串行化;

2、使用SoapFormatter進行串行化;

3、使用XmlSerializer進行串行化。
其中對于BinaryFormatter的方式需要實現ISerializable接口,而XmlSeriializ不需要實現對應的接口,可以直接序列化。在這里面我們主要采用XMlSerialize來實現對應的序列化操作進而實現對應的對象和XMl文件之間的轉換關系。

在通過序列化實現對應的轉換關系操作的功能時,我首先創建了Department ,teams,Person三個對象,并設置了對應對象之間的關系,建立的三個對象以及他們之間的對應關系模型如下圖所示:

對象的三者的代碼為:

復制代碼 代碼如下:

public class Department
    {
        public Department()
        {
        }
        public string Name;
        public List<Team> Teams;
        public Team this[string Name]
        {
            get
            {
                Team t = null;
                foreach (Team te in Teams)
                {
                    if (string.Compare(te.Name, Name) == 0)
                    {
                        t = te;
                        break;
                    }
                }
                return t;
            }
        }
    }

  public  class Team
    {
        public Team()
        {

        }
        public Team(string Name,string Title)
        {
            this.Name = Name;
            this.Title = Title;
        }
        public string Name;
        public string Title;
        public List<Person> Persons;

    }

 public  class Person
    {
        public Person()
        {

        }
        public Person(string Name,int Age,string Hobby,string Station)
        {
            this.Name = Name;
            this.Age = Age;
            this.Hobby = Hobby;
            this.Station = Station;
        }
        public string Name;
        public int Age;
        public string Hobby;
        public string Station;
    }


基于以上三者的對應關系,編寫對應的調用函數,實現對應的對象和XMl文件的轉換,對應的實現轉換的代碼為:
復制代碼 代碼如下:

public static void Main()
      {
          Department dep =new Department();
          dep.Name ="事業部";
          dep.Teams =new List<Team>();
          dep.Teams.Add(newTeam("Test","測試團隊"));
          dep.Teams.Add(newTeam("Develop","開發團隊"));
          dep["Test"].Persons =new List<Person>();
          dep["Test"].Persons.Add(newPerson("dwf", 22,"程序", "測試工程師"));
          dep["Test"].Persons.Add(newPerson("WL", 22,"代碼", "測試工程師"));
          dep["Develop"].Persons.Add(newPerson("dwf", 22,"程序", "開發工程師"));
          dep["Develop"].Persons.Add(newPerson("WL", 22,"代碼", "高級開發工程師"));

           XmlSerializer serializer =new XmlSerializer(dep.GetType());
          TextWriter writer =new StreamWriter("Department.xml");
          serializer.Serialize(writer, oSer);
          writer.Close();
      }

生成的XMl文件的格式為:
復制代碼 代碼如下:

<?xml version="1.0"encoding="utf-8"?>
<Department xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>事業部</Name>
  <Teams>
    <Team>
      <Name>Test</Name>
      <Title>測試團隊</Title>
      <Persons>
        <Person>
          <Name>dwf</Name>
          <Age>22</Age>
          <Hobby>程序</Hobby>
          <Station>測試工程師</Station>
        </Person>
        <Person>
          <Name>WL</Name>
          <Age>22</Age>
          <Hobby>代碼</Hobby>
          <Station>測試工程師</Station>
        </Person>
      </Persons>
    </Team>
    <Team>
      <Name>Develop</Name>
      <Title>開發團隊</Title>
      <Persons>
        <Person>
          <Name>dwf22</Name>
          <Age>22</Age>
          <Hobby>程序</Hobby>
          <Station>開發工程師</Station>
        </Person>
        <Person>
          <Name>WL33</Name>
          <Age>22</Age>
          <Hobby>代碼</Hobby>
          <Station>高級開發工程師</Station>
        </Person>
      </Persons>
    </Team>
  </Teams>
</Department>

通過以上方式生成的Xml文件也保存了對應對象的屬性以及對應的包含的成員的信息,但是XMl文件里面對于對象的所有屬性都是通過添加對應的子節點進行展示的,當通常我們對應XMl文件的組織,當對應的成員為對應對象的屬性信息時我們更多的是希望對應的屬性信息節點來設置對應的屬性信息。為此,開始查找對應的序列化操作的時候是否提供了對應的設置方法來修改對應的節點信息為屬性信息,通過查找,發現可以通過對對應的屬性節點,添加自定義屬性,設置對應的對象屬性保存為XMl文件時的格式以及對應的XMl節點的名稱。

修改后的代碼為:

復制代碼 代碼如下:

public class Department
    {
        public Department()
        {
        }
        [XmlAttribute]
        public string Name;
        public List<Team> Teams;
        public Team this[string Name]
        {
            get
            {
                Team t = null;
                foreach (Team te in Teams)
                {
                    if (string.Compare(te.Name, Name) == 0)
                    {
                        t = te;
                        break;
                    }
                }
                return t;
            }
        }
    }

以上只是Department修改后的對應代碼,同樣對于Teams和Person的代碼也可以采用相同的方式對對象的屬性進行修改,其中對應的轉換后屬性的設置,不僅可以設置對應的轉換后節點的類型還可以設置對應轉換后的節點的名稱和對應的屬性的名稱不相同,具體的設置可操作幫助文檔。

對應的轉換后的XMl文件為:

復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<Department xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="事業部">
  <Teams>
    <Team Name="Test" Title="測試團隊">
      <Persons>
        <Person Name="dwf" Age="22" Hobby="程序" Station="測試工程師" />
        <Person Name="WL" Age="22" Hobby="代碼" Station="測試工程師" />
      </Persons>
    </Team>
    <Team Name="Develop" Title="開發團隊">
      <Persons>
        <Person Name="dwf22" Age="22" Hobby="程序" Station="開發工程師" />
        <Person Name="WL33" Age="22" Hobby="代碼" Station="高級開發工程師" />
      </Persons>
    </Team>
  </Teams>
</Department>

通過以上方式便實現了將對應的對象轉換為XMl文件的功能,同樣通過反序列化的方式,可以實現將對應的XMl文件轉換為對應的對象。實現的代碼為:
復制代碼 代碼如下:

  XmlSerializer serializer = new XmlSerializer(t);
            FileStream  stream = new FileStream (filePath,FileMode.Open );
            Department  dep=(Department)serializer.Deserialize(stream);
            stream.Close();  

這樣便通過XMl序列化的方式實現了對應的對象和Xml文件之間的轉換關系,而且對應的對象的屬性和轉換后的XMl文件中的節點的名稱之間的對應關系是可以進行設置的。這樣第一篇中介紹的同樣Xml文件的配置工具的實現,相當于是實現了對應的Xml序列化的功能,從使用的過程中可以發現,第一篇文章中介紹的實現就是對應的Xml序列化類的實現方式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩经典中文字幕| 日韩中文字幕在线免费观看| 91久久国产综合久久91精品网站| 国产精品综合网站| 77777亚洲午夜久久多人| 亚洲香蕉成视频在线观看| 97在线精品国自产拍中文| 久久网福利资源网站| 国产成人精品久久二区二区91| 国内免费精品永久在线视频| 久久久久北条麻妃免费看| 亚洲91精品在线观看| 久久精品中文字幕免费mv| 亚洲男人天堂视频| 国产欧美精品久久久| 成人福利视频在线观看| 国产精品成人一区| 国产婷婷色综合av蜜臀av| 精品国产一区二区三区久久久狼| 久久精品国产免费观看| 国产美女91呻吟求| 国产成人午夜视频网址| 精品久久久久久久大神国产| 欧美激情视频一区二区三区不卡| 久久久久亚洲精品国产| 国产亚洲精品高潮| 国产成人啪精品视频免费网| 色伦专区97中文字幕| 日韩欧美高清视频| 91精品国产高清久久久久久| 亚洲午夜精品久久久久久久久久久久| 热久久这里只有精品| 日韩中文字幕欧美| 欧美一区二区影院| 成人免费看片视频| 亚洲精品免费一区二区三区| 欧美巨大黑人极品精男| 欧美日韩在线观看视频小说| 亚洲人成77777在线观看网| 欧美国产精品va在线观看| 欧美精品999| 国产在线精品播放| 91av视频在线播放| 久久av红桃一区二区小说| 久久久午夜视频| 国内精品一区二区三区四区| 97人人爽人人喊人人模波多| 国产精品高潮粉嫩av| 久久成人精品一区二区三区| 伊人久久久久久久久久久| 欧美激情视频免费观看| 国产一区二区丝袜高跟鞋图片| 国语自产精品视频在线看抢先版图片| 久久九九热免费视频| 精品女厕一区二区三区| 91久久久久久久| 中文字幕亚洲欧美一区二区三区| 国产成人综合av| 欧美激情视频在线观看| 亚洲欧美一区二区三区情侣bbw| 亚洲国产成人精品久久| 久久精品视频免费播放| 日韩av黄色在线观看| 日韩成人激情影院| 九九热99久久久国产盗摄| 亚洲成人在线视频播放| 欧美日韩亚洲成人| 国产精品视频播放| 俺去了亚洲欧美日韩| 亚洲精品成人久久久| 国产一区二区三区久久精品| 国产精品入口尤物| 国产中文字幕91| 亚洲xxxxx电影| 欧美日韩国产中文字幕| 在线精品视频视频中文字幕| 亚洲欧美日韩精品久久| 亚洲男人天堂网| 亚洲一区二区三区sesese| 精品视频偷偷看在线观看| 欧美性一区二区三区| 日韩黄色高清视频| 国内精品久久久久| 91精品在线国产| 日本精品性网站在线观看| 国产专区精品视频| 高清一区二区三区四区五区| 亚洲在线免费看| 国产成人a亚洲精品| 亚洲欧美国产精品久久久久久久| 欧美片一区二区三区| 国产欧美日韩免费看aⅴ视频| www.亚洲天堂| 欧美激情精品久久久久久变态| 亚洲一区二区三区乱码aⅴ| 日韩电影中文 亚洲精品乱码| 亚洲视频免费一区| 国产91精品久| www.亚洲男人天堂| 日韩国产在线播放| 最好看的2019年中文视频| 黑人巨大精品欧美一区二区| 97精品视频在线观看| 98精品国产高清在线xxxx天堂| 成人免费午夜电影| 亚洲第一免费播放区| 亚洲另类图片色| 国产丝袜一区二区三区免费视频| 成人97在线观看视频| 91免费看片在线| 日本韩国欧美精品大片卡二| 成人h片在线播放免费网站| 亚洲精品视频中文字幕| 日韩av网址在线| 在线视频一区二区| 亚洲老头同性xxxxx| 中文字幕久精品免费视频| 久久不射电影网| 亚洲91精品在线| 午夜精品美女自拍福到在线| 欧美激情一二三| 久久人体大胆视频| 成人免费网站在线| 亚洲自拍偷拍色片视频| 亚洲片在线资源| 欧美成人免费va影院高清| 亚洲直播在线一区| 日韩在线观看电影| 国产精品久久久久久影视| 色哟哟入口国产精品| 欧美理论电影在线观看| 欧美国产日韩精品| 国产欧美一区二区白浆黑人| 中文字幕v亚洲ⅴv天堂| 国产日韩av在线| 欧美在线观看网站| 日本不卡视频在线播放| x99av成人免费| 国产精品老女人精品视频| 日韩亚洲欧美中文高清在线| 日韩av一区在线观看| 久久久久久久国产精品| 伊人久久综合97精品| 国产精品7m视频| 欧美在线视频一区二区| 韩剧1988在线观看免费完整版| 亚洲国产精品悠悠久久琪琪| 日韩va亚洲va欧洲va国产| 久热精品视频在线观看| 黑人巨大精品欧美一区二区| 欧美日韩国产色| 亚洲一区二区三区视频播放| 911国产网站尤物在线观看| 精品国产精品三级精品av网址| 97精品视频在线| 成人黄色av播放免费| 亚洲18私人小影院| 亚洲a中文字幕| 欧美xxxx18国产| 日韩电影中文字幕在线| 亚洲国产欧美自拍| 国产精品jvid在线观看蜜臀| 精品国产91乱高清在线观看| 欧美在线视频在线播放完整版免费观看|