Class:
namespace Biftek
{
[XmlRoot("Users")]
public class User
{
public string username { get; set; }
public string password { get; set; }
}
public class UserManager
{
public static List<User> Load(string path)
{
List<User> users = new List<User>();
if(File.Exists(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<User>));
using (XmlReader reader = XmlReader.Create(path))
{
users = (List<User>)serializer.Deserialize(reader);
}
}
return users;
}
}
}
XML File:
<?xml version="1.0" encoding="utf-8" ?>
<Users>
<User>
<username>admin</username>
<password>admin</password>
</User>
<User>
<username>user</username>
<password>user</password>
</User>
</Users>
Exceptions:
System.InvalidOperationException: ‘There is an error in XML document (2, 2).’
Inner Exception
InvalidOperationException: < Users xmlns=”> was not expected.
>Solution :
In your code, the XmlSerializer is expecting to deserialize a List, but your XML file is structured with a root element that contains user elements.
namespace Biftek
{
[XmlRoot("Users")]
public class UsersList
{
[XmlElement("User")]
public List<User> Users { get; set; } = new List<User>();
}
public class User
{
public string username { get; set; }
public string password { get; set; }
}
public class UserManager
{
public static List<User> Load(string path)
{
UsersList usersList = new UsersList();
if(File.Exists(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(UsersList));
using (XmlReader reader = XmlReader.Create(path))
{
usersList = (UsersList)serializer.Deserialize(reader);
}
}
return usersList.Users;
}
}
}