C# 如何反序列化XML文档?
如何反序列化XML文档 我的XMLC# 如何反序列化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.
基础知识
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; }
}