C# 如何反序列化XML文档?

C# 如何反序列化XML文档?,c#,xml,serialization,C#,Xml,Serialization,如何反序列化XML文档 我的XML 基础知识 IAG4 100 EC0001 DEF 100 200 600 1000 101 EC0002 我希望将其反序列化到一个类中,并希望使用创建的类的对象访问它们。我使用的是C#。使用xml序列化代码,如下所示 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.

如何反序列化XML文档 我的XML


基础知识
IAG4
100
EC0001
DEF
100
200
600
1000
101
EC0002

我希望将其反序列化到一个类中,并希望使用创建的类的对象访问它们。我使用的是C#。

使用xml序列化代码,如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(Message));
            Message message = (Message)serializer.Deserialize(reader);
        }
    }
    [XmlRoot("MESSAGE")]
    public class Message
    {
        [XmlElement("NAME")]
        public string name { get; set; }
        [XmlElement("BODY")]
        public Body body { get; set; }
    }
    public class Body
    {
        [XmlElement("EQPID")]
        public string eqpid { get; set; }

        [XmlArray("ECS")]
        [XmlArrayItem("EC")]
        public List<EC> ec { get; set; }
    }
    public class EC
    {
        public int ECID { get; set; }  
        public string ECNAME { get; set; }
        public string ECDEF { get; set; } 
        public int ECSLL { get; set; } 
        public int ECSUL { get; set; } 
        public int ECWLL { get; set; }
        public int ECWUL { get; set; } 

    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Serialization;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XmlReader=XmlReader.Create(文件名);
XmlSerializer serializer=新的XmlSerializer(typeof(Message));
消息消息=(消息)序列化程序。反序列化(读取器);
}
}
[XmlRoot(“消息”)]
公共类消息
{
[XmlElement(“名称”)]
公共字符串名称{get;set;}
[XmlElement(“主体”)]
公共机构主体{get;set;}
}
公共阶级团体
{
[XmlElement(“EQPID”)]
公共字符串eqpid{get;set;}
[XmlArray(“ECS”)]
[XmlArrayItem(“EC”)]
公共列表ec{get;set;}
}
公开课
{
公共int ECID{get;set;}
公共字符串ECNAME{get;set;}
公共字符串ECDEF{get;set;}
public int ECSLL{get;set;}
public int ECSUL{get;set;}
public int ECWLL{get;set;}
公共int ECWUL{get;set;}
}
}

您可以使用在线工具生成存储XML数据所需的类。要反序列化Xml,可以使用

您的类定义为

[XmlRoot(ElementName="EC")]
public class EC 
{
        [XmlElement(ElementName="ECID")]
        public string ECID { get; set; }
        [XmlElement(ElementName="ECNAME")]
        public string ECNAME { get; set; }
        [XmlElement(ElementName="ECDEF")]
        public string ECDEF { get; set; }
        [XmlElement(ElementName="ECSLL")]
        public string ECSLL { get; set; }
        [XmlElement(ElementName="ECSUL")]
        public string ECSUL { get; set; }
        [XmlElement(ElementName="ECWLL")]
        public string ECWLL { get; set; }
        [XmlElement(ElementName="ECWUL")]
        public string ECWUL { get; set; }
}

[XmlRoot(ElementName="ECS")]
public class ECS 
{
        [XmlElement(ElementName="EC")]
        public List<EC> EC { get; set; }
}

[XmlRoot(ElementName="BODY")]
public class BODY 
{
        [XmlElement(ElementName="EQPID")]
        public string EQPID { get; set; }
        [XmlElement(ElementName="ECS")]
        public ECS ECS { get; set; }
}

[XmlRoot(ElementName="MESSAGE")]
public class MESSAGE 
{
        [XmlElement(ElementName="NAME")]
        public string NAME { get; set; }
        [XmlElement(ElementName="BODY")]
        public BODY BODY { get; set; }
}
[XmlRoot(ElementName=“EC”)]
公开课
{
[xmlement(ElementName=“ECID”)]
公共字符串ECID{get;set;}
[xmlement(ElementName=“ECNAME”)]
公共字符串ECNAME{get;set;}
[xmlement(ElementName=“ECDEF”)]
公共字符串ECDEF{get;set;}
[xmlement(ElementName=“ECSLL”)]
公共字符串ECSLL{get;set;}
[xmlement(ElementName=“ECSUL”)]
公共字符串ECSUL{get;set;}
[xmlement(ElementName=“ECWLL”)]
公共字符串ECWLL{get;set;}
[xmlement(ElementName=“ECWUL”)]
公共字符串ECWUL{get;set;}
}
[XmlRoot(ElementName=“ECS”)]
公共类ECS
{
[XmlElement(ElementName=“EC”)]
公共列表EC{get;set;}
}
[XmlRoot(ElementName=“BODY”)]
公共阶级团体
{
[xmlement(ElementName=“EQPID”)]
公共字符串EQPID{get;set;}
[XmlElement(ElementName=“ECS”)]
公共ECS ECS{get;set;}
}
[XmlRoot(ElementName=“MESSAGE”)]
公共类消息
{
[xmlement(ElementName=“NAME”)]
公共字符串名称{get;set;}
[xmlement(ElementName=“BODY”)]
公共机构主体{get;set;}
}
XmlSerializer serializer = new XmlSerializer(typeof(MESSAGE));
using (TextReader reader = new StringReader(xml))
{
    var result = (MESSAGE)serializer.Deserialize(reader);
}
[XmlRoot(ElementName="EC")]
public class EC 
{
        [XmlElement(ElementName="ECID")]
        public string ECID { get; set; }
        [XmlElement(ElementName="ECNAME")]
        public string ECNAME { get; set; }
        [XmlElement(ElementName="ECDEF")]
        public string ECDEF { get; set; }
        [XmlElement(ElementName="ECSLL")]
        public string ECSLL { get; set; }
        [XmlElement(ElementName="ECSUL")]
        public string ECSUL { get; set; }
        [XmlElement(ElementName="ECWLL")]
        public string ECWLL { get; set; }
        [XmlElement(ElementName="ECWUL")]
        public string ECWUL { get; set; }
}

[XmlRoot(ElementName="ECS")]
public class ECS 
{
        [XmlElement(ElementName="EC")]
        public List<EC> EC { get; set; }
}

[XmlRoot(ElementName="BODY")]
public class BODY 
{
        [XmlElement(ElementName="EQPID")]
        public string EQPID { get; set; }
        [XmlElement(ElementName="ECS")]
        public ECS ECS { get; set; }
}

[XmlRoot(ElementName="MESSAGE")]
public class MESSAGE 
{
        [XmlElement(ElementName="NAME")]
        public string NAME { get; set; }
        [XmlElement(ElementName="BODY")]
        public BODY BODY { get; set; }
}