我不能从xml反序列化

时间:2014-05-12 17:25:16

标签: c# serialization

我遇到了从XML反序列化的问题。

我的反序列化代码是:

public void wczytaj()
    {
        StringReader reader = new StringReader("sklep.txt");
        XmlSerializer serializer = new XmlSerializer(typeof(Sklep));
        Sklep sklep = (Sklep) serializer.Deserialize(reader);
        reader.Close();
    }

Sklep课程的主要部分

[Serializable]
[XmlRoot("Sklep")]
public class Sklep : IKlient, IProdukt, IRachunek, IWKlient, IWProdukt, IWRachunek
{
    public List<Klient> listKlienci = new List<Klient>();
    public List<Produkt> listProdukty = new List<Produkt>();
    public ObservableCollection<Rachunek> ocRachunki = new ObservableCollection<Rachunek>();

当我编译该程序时,我有“System.Xml.dll中发生类型'System.InvalidOperationException'的未处理异常”

其他信息:Dokument XMLzawelobłąd(1,1)。

XML Document有错误(1,1)

我与此有什么关系?我想反序化这个类。

XML文件:

http://pastebin.com/VVNgSZpM&lt; - 抱歉,我忘记了

2 个答案:

答案 0 :(得分:1)

这一行:

StringReader reader = new StringReader("sklep.txt");

正在阅读文字字符串&#34; sklep.txt&#34;然后下一行试图将其解析为XML(它不是)。也许:

StreamReader reader = new StreamReader("sklep.txt");

或:

XmlReader reader = XmlReader.Create(path);

答案 1 :(得分:0)

您必须将匹配的属性添加到您的Propertys:

[Serializable]
[XmlRoot("Sklep")]
public class Sklep : IKlient, IProdukt, IRachunek, IWKlient, IWProdukt, IWRachunek
{
    [XmlArray,XmlArrayItem]
    public List<Klient> listKlienci = new List<Klient>();
    [XmlArray,XmlArrayItem]
    public List<Produkt> listProdukty = new List<Produkt>();
    [XmlArray,XmlArrayItem]
    public ObservableCollection<Rachunek> ocRachunki

附加说明:

[XmlRoot]
public class Sklep
{
    [XmlArray, XmlArrayItem]
    public List<Klient> listKlienci = new List<Klient>();
}
[XmlType]
public class Klienci
{
    [XmlElement]
    public string Imie;
}

您的XmlTypes或Roots必须包含无参数构造函数,并且每个Xml-Attribute-Field必须是公共的。