【问题标题】:Writing Xml Class in c#在 C# 中编写 XML 类
【发布时间】:2019-07-04 04:59:18
【问题描述】:

我有一个这样的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Devices>
        <Settings>
            <Name>ABC</DeviceName>
            <HostNic>LAN_1</HostNic>
        </Settings>
    </Devices>
</Configuration>

我想将其反序列化为对象形式。我正在尝试为 xml 文件定义一个类结构,如下所示:

class Configuration
{
    [XmlElement("Address")]
    public List<Devices> deviceList = new List<Devices>();
}

class Devices
{
    [XmlElement("Address")]
    public List<Settings> settingList = new List<Settings>();
}

class Settings
{
    public string Name { get; set; }
    public string HostNic { get; set; }
}

有没有其他合适的方式来定义这个 xml 文件的类?

【问题讨论】:

  • 我认为你需要一个XmlRoot
  • 有一些有用的信息Generate C# class from XML,这可能对你有帮助。
  • 类必须是公开的才能被XmlSerializer序列化。除此之外,你的问题是什么?你有问题吗?有什么不工作吗?
  • @dbc 它正在工作。我只是想知道有没有更有效的方式为这个 xml 文件编写类。
  • 您可能想澄清一下您追求的效率是多少?你的意思是更少的代码还是高效的(反)序列化?它也可能有助于提供有关您所拥有的约束的更多背景信息。

标签: c# xml serialization


【解决方案1】:

您的类需要一些修改,特别是您添加的属性。

[XmlRoot]
public class Configuration
{
    [XmlElement("Devices")]
    public List<Devices> deviceList = new List<Devices>();
}

public class Devices
{
    [XmlElement("Settings")]
    public List<Settings> settingList = new List<Settings>();
}

public class Settings
{
    public string Name { get; set; }
    public string HostNic { get; set; }
}

然后就可以将XML反序列化成上面的类了:

var serializer = new XmlSerializer(typeof(Configuration));
using (System.IO.TextReader reader = new System.IO.StringReader(<Your XML String>))
{
     Configuration config = (Configuration)serializer.Deserialize(reader);
}

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多