List< t>反序列化c#

本文关键字:反序列化 List | 更新日期: 2023-09-27 17:50:48

我对c#比较陌生,我必须为工作编写一个相当大的应用程序。我想用反序列化填充xml文件中的项"Server"列表。我知道如何通过"硬编码"来做到这一点,但我认为反序列化将更容易和更清晰。

这是我的服务器类:
public class Server
{
    [XmlElement(ElementName = "Name")]
    public int Name { get; set; }
    [XmlElement(ElementName = "URL")]
    public int URL { get; set; }
}

我的XML文件(数据仅用于测试)

<?xml version="1.0" encoding="utf-8" ?> 
<ServersList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Servers>  
    <Server>
      <Name>Tata</Name>
      <URL>goulf</URL>
    </Server>
    <Server>
      <Name>test2</Name>
      <URL>http://test</URL>
    </Server>
  </Servers>
</ServersList>

和我用于反序列化的代码(我使用在stackoverflow和其他网站上找到的示例,但它不起作用)

public List<T> ReadServersList<T>()
    {
        XmlSerializer xmlSer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute("ServersList"));
        TextReader stringReader = new StringReader(xmlPath);
        List<T> b = (List<T>)xmlSer.Deserialize(stringReader);
        stringReader.Close();
        return b;
    }

我在窗口构造函数中调用这个函数,然后抛出了一个异常:

类型为"System.Windows.Markup"的未处理异常。XamlParseException'发生在PresentationFramework.dll

附加信息:'调用类型'TestWPF的构造函数。与指定绑定约束匹配的主窗口抛出了异常。行号'3',行位'9'。

所以,我昨天一整天都在做这个,我真的很厌倦序列化,我想我找不到解决我的问题的方法。你能帮我一下吗?

List< t>反序列化c#

假设您呼叫ReadServersList<ServersList>()

你可能需要

class ServersList
{
    [XmlElement(ElementName = "Servers")]
    Server [] Servers;
}

然后这个方法看起来像

public ServersList ReadServersList()
{
    XmlSerializer xmlSer = new XmlSerializer(typeof(ServersList), new XmlRootAttribute("ServersList"));
    TextReader stringReader = new StringReader(xmlPath);
    ServersList b = (ServersList)xmlSer.Deserialize(stringReader);
    stringReader.Close();
    return b;
}
相关文章: