我遇到了从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; - 抱歉,我忘记了
答案 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必须是公共的。