14

I have an XML file that I deserialize, the funny part is the XML file is the was serialized using the following code:

enter code here
var serializer = new XmlSerializer(typeof(CommonMessage));
var writer = new StreamWriter("OutPut.txt");
serializer.Serialize(writer, commonMessage);
writer.Close();

And i m trying to deserialized it again to check if the output match the input. anyhow here is my code to deserialize:

var serializer = new XmlSerializer(typeof(CommonMessage));
var reader = new StringReader(InputFileName);
CommonMessage commonMessage = (CommonMessage)serializer.Deserialize(reader);
jprbest
  • 717
  • 6
  • 15
  • 32
  • 3
    Have you serialized it using one encoding and now are trying to deserialize with another encoding? – Oded Jan 18 '11 at 16:08
  • no here is what i use the serialized var serializer = new XmlSerializer(typeof(CommonMessage)); var writer = new StreamWriter("OutPut.txt"); serializer.Serialize(writer, commonMessage); writer.Close(); – jprbest Jan 18 '11 at 16:13
  • @jprbest - if you want to add information, please _edit_ the question and add the detail there instead of a comment. – Oded Jan 18 '11 at 16:14
  • ok sorry i ll do it write now – jprbest Jan 18 '11 at 16:15
  • 1
    from my experience, error at (1,1) most often results from me opening a document with a notepad and accidentally putting a space or a new line at the top. – THX-1138 Jan 18 '11 at 16:20
  • There should be better details in the InnerException. Can you share those details? – Austin Salonen Jan 18 '11 at 16:34

4 Answers4

36

Replace StringReader with StreamReader and it will work fine. StringReader reads value from the string (which is file name in your case).

Alexei Levenkov
  • 98,904
  • 14
  • 127
  • 179
2

I just had the same error message but different error source. In case someone has the same problem like me. I chopped off the very first char of my xml string by splitting strings. And the xml string got corrupted:

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

(1,1) means basically first char of the first line is incorrect and the string can't be deserialized.

Bitterblue
  • 13,162
  • 17
  • 86
  • 124
1

include in your CommonMessage class the XmlRoot element tag with your xmlroot eg:[XmlRoot("UIIVerificationResponse")]

asams
  • 19
  • 3
0

You should disable the order mark in the StreamWriter constructor like this:

UTF8Encoding(false)

Full sample:

        using (MemoryStream stream = new MemoryStream())
        using (StreamWriter writer = new StreamWriter(stream, new UTF8Encoding(false)))
        {
            xmlSerializer.Serialize(writer, objectToSerialize, ns);

            return Encoding.UTF8.GetString(stream.ToArray());
        }
Xtremexploit
  • 319
  • 4
  • 7