JMK
JMK

Reputation: 28059

XML Serialization - Why can't I change the encoding?

This should hopefully be a simple one.

I am serializaing a List<> of C# objects to an XML document. Everything is going great however my XML document has ASCII encoding (spaces are represented as X0020 for example) and the client is complaining so I want to change the encoding to UTF8 like so:

private void SerializeToXML(List<ResponseData> finalXML)
{
    XmlSerializer serializer = new XmlSerializer(typeof(List<ResponseData>));
    TextWriter textWriter = new StreamWriter(txtFileLocation.Text, Encoding.UTF8);
    serializer.Serialize(textWriter, finalXML);
    textWriter.Close();
}

Intellisense is telling me this should work...

Intellisense

...but is complaining when I try it...

Error

What am I doing wrong?

Thanks

Upvotes: 1

Views: 1034

Answers (2)

Mare Infinitus
Mare Infinitus

Reputation: 8162

here is a snippet that is working like a charm:

using (Stream stream = File.Open(SerializeXmlFileName, FileMode.Create))
{
    using (TextWriter writer = new StreamWriter(stream, Encoding.UTF8))
    {
         XmlSerializer xmlFormatter = new XmlSerializer(this.Member.GetType());
         xmlFormatter.Serialize(writer, this.Member);
         writer.Close();
    }

    stream.Close();
}

Upvotes: 1

Dusty Lau
Dusty Lau

Reputation: 591

There is no (string, Encoding) method signature for the StreamWriter constructor.

There is a (Stream, Encoding) signature for the constructor.

Upvotes: 4

Related Questions