Der Versuch, eine XML-Protokolldatei zu deserialisieren. Und kann anscheinend nichts als Fehler im XML-Dokument (0,0) bekommen. Ich vermute, es hat etwas mit meiner Klasse zu tun, aber ich kann keine Lösung finden. Ich kann die XML-Formatierung ändern, da dies eine Protokolldatei von einem Server kommt, ist (vereinfacht nur)Deserialisierung von XML
XML
<?xml version="1.0" encoding="utf-8"?>
<POSLog>
<Transaction>
<RetailStoreID>1</RetailStoreID>
<SequenceNumber>2</SequenceNumber>
</Transaction>
<Transaction>
<RetailStoreID>1</RetailStoreID>
<SequenceNumber>3</SequenceNumber>
</Transaction>
</POSLog>
Klasse
[Serializable()]
public class Transaction
{
[XmlElement("RetailStoreID")]
public string RetailStoreID { get; set; }
[XmlElement("SequenceNumber")]
public string SequenceNumber { get; set; }
}
[Serializable()]
[XmlRoot("POSLog")]
public class POSLog
{
[XmlArray("POSLog")]
[XmlArrayItem("Transaction", typeof(Transaction))]
public Transaction[] Transaction { get; set; }
}
Deserialize Code
POSLog poslog = new POSLog();
string path = "POSLog.xml";
XmlSerializer serializer = new XmlSerializer(typeof(POSLog));
StreamReader reader = new StreamReader(path);
poslog = (POSLog)serializer.Deserialize(reader);
gefunden beheben, indem Sie zusammen mit Änderungen an der Klasse von StreamReader zu FileStream wechseln. Das Ändern der Kodierung scheint bei der Verwendung des StreamReader nicht hilfreich zu sein.
1) Sie benötigen Innere Ausnahmen, 2) (offtopic) Sie ein bisschen zu viele Attribute verwenden. –
Zeigen Sie den StackTrace und insbesondere die gesamte Ausnahme (die innere Ausnahme). – HimBromBeere
Da der Fehler bei (0,0) liegt, was das erste Zeichen der ersten Zeile bedeutet, vermute ich, dass Ihre XML-Datei mit UTF mit einer Byte-Reihenfolge-Marke codiert wurde. Versuchen Sie, Ihrem StreamReader eine Codierung hinzuzufügen. –