如何反序列化XML文档?

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

<Title>
  <NAME>ABC</NAME>
  <BODY>
     <A>IAG4</A>
     <B>
        <B1>
           <C>100</C>  
           <C>EC0001</C1>
           <C2>DEF</C2> 
           <C3>100</C3> 
           <C4>200</C4> 
           <C5>600</C5> 
           <C6>1000</C6> 
        </B1>
        <B1>
           <D>101</D>  
           <D1>EC0002</D1>
        </B1>
     </B>
  </BODY>
</Title>

我想将此反序列化为一个类,并希望使用创建的类的对象来访问它们。我正在使用C#。

cycadwong 回答:如何反序列化XML文档?

使用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; } 

    }
}
,

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

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; }
}
本文链接:https://www.f2er.com/2909690.html

大家都在问