web-dev-qa-db-ja.com

XMLドキュメントの逆シリアル化エラー(1,1)

逆シリアル化する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);
13
jprbest

StringReaderをStreamReaderに置き換えると、正常に動作します。 StringReaderは、文字列(この場合はファイル名)から値を読み取ります。

31
Alexei Levenkov

エラーメッセージは同じですが、エラーソースが異なります。誰かが私のような同じ問題を抱えている場合に備えて。文字列を分割して、xml文字列の最初のcharを切り落としました。そして、xml文字列が破損しました:

"?xml version="1.0" encoding="utf-16"?> ..." // my error
"<?xml version="1.0" encoding="utf-16"?> ..." // correct

(1,1)は、基本的に最初の行の最初の文字が正しくないを意味し、文字列を逆シリアル化できません。

2
Bitterblue

commonMessageクラスにxmlrootとともにXmlRoot要素タグを含めます。例:[XmlRoot( "UIIVerificationResponse")]

0
asams