如何将XML格式资料反序列化为C# 物件

资料来源

高雄市各区公所

建立基于XML格式资料的Model

首先将XML资料内容複製贴上至Xml2CSharp.com。
点选底下的Convert,产生结果。
在专案建立Models资料夹与Orgs.cs。
複製结果,贴到Orgs.cs,调整程式码:

using System.Collections.Generic;using System.Xml.Serialization;namespace xml2.Models{    [XmlRoot(ElementName = "orgs")]    public class Orgs    {        [XmlElement(ElementName = "frg")]        public Frg Frg { get; set; }    }    [XmlRoot(ElementName = "frg")]    public class Frg    {        [XmlElement(ElementName = "org")]        public List<Org> Org { get; set; }        [XmlAttribute(AttributeName = "id")]        public string Id { get; set; }    }    [XmlRoot(ElementName = "org")]    public class Org    {        [XmlAttribute(AttributeName = "id")]        public string Id { get; set; }        [XmlAttribute(AttributeName = "lat")]        public string Lat { get; set; }        [XmlAttribute(AttributeName = "lng")]        public string Lng { get; set; }        [XmlAttribute(AttributeName = "informaddress")]        public string Informaddress { get; set; }        [XmlAttribute(AttributeName = "hlink")]        public string Hlink { get; set; }        [XmlAttribute(AttributeName = "informtel")]        public string Informtel { get; set; }        [XmlAttribute(AttributeName = "servItem")]        public string ServItem { get; set; }        [XmlAttribute(AttributeName = "servTime")]        public string ServTime { get; set; }        [XmlAttribute(AttributeName = "dataOrg")]        public string DataOrg { get; set; }        [XmlAttribute(AttributeName = "doOrg")]        public string DoOrg { get; set; }        [XmlText]        public string Text { get; set; }    }}

Model建立完成。

使用XmlSerializer类别反序列化

Program.cs

static void Main(string[] args){    var program = new Program();    program.ReadPO(@"C:\frg.xml");}private void ReadPO(string filename){    // 建立serializer物件,并指定反序列化物件的型别    XmlSerializer serializer = new XmlSerializer(typeof(Orgs));    // 宣告一个要被反序列化的型别的物件变数    Orgs orgs;    // 建立FileStream物件,读取XML档案    using (FileStream fs = new FileStream(filename, FileMode.Open))    {        //反序列化XML        orgs = (Orgs)serializer.Deserialize(fs);    }    Console.Write(orgs.Frg.Org);}

下中断点确认是否有转换成物件型别:
http://img2.58codes.com/2024/20112573G5IIBl51B5.png

参考来源:
XmlSerializer Class (System.Xml.Serialization) | Microsoft Docs


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章