资料来源
高雄市各区公所
建立基于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);}
下中断点确认是否有转换成物件型别:
参考来源:
XmlSerializer Class (System.Xml.Serialization) | Microsoft Docs