XMLログファイルを逆シリアル化しようとしています。 XML文書(0,0)には何も取得できないようです。私はそれが私のクラスと関係があると推測していますが、私は解決策を見つけることができません。これは、サーバーからのログファイルであるように私は(ちょうど簡体字)の書式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>
クラス
[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; }
}
逆シリアル化コードが見つかり
POSLog poslog = new POSLog();
string path = "POSLog.xml";
XmlSerializer serializer = new XmlSerializer(typeof(POSLog));
StreamReader reader = new StreamReader(path);
poslog = (POSLog)serializer.Deserialize(reader);
をXMLを変更することはできませんクラスの変更と共にStreamReaderからFileStreamに切り替えて修正します。 StreamReaderを使用しているとき、エンコードの変更は役に立たないようです。
1)内部例外が必要2)(offtopic)属性が多すぎます。 –
スタックトレース、特に全体例外(内部例外)を表示します。 – HimBromBeere
エラーは(0,0)にあります。つまり、最初の行の最初の文字を意味するので、XMLファイルがバイトオーダーマーク付きのUTFを使用してエンコードされているためです。 StreamReaderにエンコードを追加してみてください。 –