c# - 如何将xml反序列化为对象

标签 c# xml-deserialization

<分区>

<StepList>
  <Step>
    <Name>Name1</Name>
    <Desc>Desc1</Desc>
  </Step>
  <Step>
    <Name>Name2</Name>
    <Desc>Desc2</Desc>
  </Step>
</StepList>

我有这个 XML, 我应该如何为类建模,以便我能够使用 XmlSerializer 对象反序列化它?

最佳答案

你的类应该是这样的

[XmlRoot("StepList")]
public class StepList
{
    [XmlElement("Step")]
    public List<Step> Steps { get; set; }
}

public class Step
{
    [XmlElement("Name")]
    public string Name { get; set; }
    [XmlElement("Desc")]
    public string Desc { get; set; }
}

这是我的测试代码。

string testData = @"<StepList>
                        <Step>
                            <Name>Name1</Name>
                            <Desc>Desc1</Desc>
                        </Step>
                        <Step>
                            <Name>Name2</Name>
                            <Desc>Desc2</Desc>
                        </Step>
                    </StepList>";

XmlSerializer serializer = new XmlSerializer(typeof(StepList));
using (TextReader reader = new StringReader(testData))
{
    StepList result = (StepList) serializer.Deserialize(reader);
}

如果你想读取一个文本文件,你应该将文件加载到一个 FileStream 中 并将其反序列化。

using (FileStream fileStream = new FileStream("<PathToYourFile>", FileMode.Open)) 
{
    StepList result = (StepList) serializer.Deserialize(fileStream);
}

关于c# - 如何将xml反序列化为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518372/

相关文章:

c# - 使用 Internet Explorer 的 asp.net 登录控件

c# - HttpWebRequest 似乎不是 "get"我的代理凭据

xml - 无法生成临时类(结果=1)。错误 CS0030 : Cannot convert type

c# - 使用 XSD/代码生成的 XML 反序列化 - 解析错误

c# - 使用 XMLSerializer 反序列化 XML

java - 如何使用 jaxb 读取属性?

c# - 如何使用 AutoMapper 从可枚举(或数组)列表属性映射到列表?

c# - unity 中游戏对象的唯一不变标识符

c# - 将 div 的内容居中 - 使用 CSS

c# - 反序列化 XML 文件 - xml 文档中的错误 (1,2)