逆シリアル化するXMLファイルがあります。面白い部分は、次のコードを使用してシリアル化されたXMLファイルです。
enter code here
var serializer = new XmlSerializer(typeof(CommonMessage));
var writer = new StreamWriter("OutPut.txt");
serializer.Serialize(writer, commonMessage);
writer.Close();
そして、出力が入力と一致するかどうかを確認するために、もう一度逆シリアル化しようとしています。とにかくここに逆シリアル化する私のコードがあります:
var serializer = new XmlSerializer(typeof(CommonMessage));
var reader = new StringReader(InputFileName);
CommonMessage commonMessage = (CommonMessage)serializer.Deserialize(reader);
StringReaderをStreamReaderに置き換えると、正常に動作します。 StringReaderは、文字列(この場合はファイル名)から値を読み取ります。
エラーメッセージは同じですが、エラーソースが異なります。誰かが私のような同じ問題を抱えている場合に備えて。文字列を分割して、xml文字列の最初のchar
を切り落としました。そして、xml文字列が破損しました:
"?xml version="1.0" encoding="utf-16"?> ..." // my error
"<?xml version="1.0" encoding="utf-16"?> ..." // correct
(1,1)は、基本的に最初の行の最初の文字が正しくないを意味し、文字列を逆シリアル化できません。
commonMessageクラスにxmlrootとともにXmlRoot要素タグを含めます。例:[XmlRoot( "UIIVerificationResponse")]