Zitroneee Ответов: 1

Ошибка 2, 2 преобразования Xml-файла в объект (десериализация)


Я хочу прочитать серверы в списке серверов из XML файла
и он показывает мне ошибку "Ошибка в xml-документе (2,2)
и я не знаю, как это исправить и если который XML-файл содержит ошибку ?


Мой Исходный Код:
XmlSerializer serializer = new XmlSerializer(typeof(Server));
FileStream loadStream = new
FileStream(@"C:\Users\dominik.scholz\Desktop\Settings.xml",
FileMode.Open, FileAccess.Read);
Settings loadedObject = (Settings)serializer.Deserialize(loadStream);
loadStream.Close();


Мой класс называется "Serverliste"
[XmlRoot("Settings"), Serializable]
public class Settings
{
    [XmlElement("Serverliste")]
    public Serverliste Serverliste { get; set; }
}

public class Serverliste
{
    [XmlElement("Server")]
    public List<Server> Server { get; set; }
}

public class Server
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlAttribute("Host")]
    public string Host { get; set; }

    [XmlElement("Port")]
    public int Port { get; set; }

    [XmlElement("Aktiv")]
    public bool Aktiv { get; set; }
}



и мой XML-файл
<?xml version="1.0"?>
<Settings>
    <Serverliste>
        <Server>
			<Name serializeAs="String">
				<value>Server1</value>
			</Name>
            <Host serializeAs="String">
                <value>127.0.0.1</value>
            </Host>
            <Port serializeAs="String">
                <value>10</value>
            </Port>
            <Aktiv serializeAs="boolean">
                <value>true</value>
            </Aktiv>
        </Server>
        <Server>
			<Name serializeAs="String">
				<value>Server2</value>
			</Name>
            <Host serializeAs="String">
                <value>192.168.0.1</value>
            </Host>
            <Port serializeAs="String">
                <value>20</value>
            </Port>
            <Aktiv serializeAs="boolean">
                <value>false</value>
            </Aktiv>
        </Server>
    </Serverliste>
</Settings>



Что я уже пробовал:

Я попытался проверить xml-файл на наличие ошибок, а также попытался использовать метод Deserialize.

Я много искал и видел много примеров, но у меня ничего не получилось, может быть, в xml-файле sytax есть ошибка?

1 Ответов

Рейтинг:
0

Maciej Los

С первого взгляда, Server класс должен быть коллекцией (массивом).

Я бы посоветовал следовать инструкциям от: .net - генерация класса C# из XML[^] чтобы создать правильный набор классов с их нарядами.

Пожалуйста, прочтите и мой совет тоже: Полный пример сериализации и десериализации пользовательских коллекций классов[^]