Написание Xml класса в c # - PullRequest
0 голосов
/ 04 июля 2019

У меня есть 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-файла?

1 Ответ

1 голос
/ 04 июля 2019

Ваши классы нуждаются в некоторых модификациях, особенно в атрибутах, которые вы добавили.

[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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...