I am using this code to Serialize
XML to String
:
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { indent = true, Encoding = Encoding.UTF8 }; using (var sw = new StringWriter()) { using (XmlWriter xmlWriter = XmlWriter.Create(sw, xmlWriterSettings)) { XmlSerializer xmlSerializer = new XmlSerializer(moviesObject.GetType(), new XmlRootAttribute("category")); xmlSerializer.Serialize(xmlWriter, moviesObject); } return sw.ToString(); }
The problem is that i get :
<?xml version="1.0" encoding="utf-16"?> <category xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" havemore="no"> <items> <movie> <videoid>videoid1</videoid> <title>title1</title> </movie> </items> </category>
There is any way to change the <?xml version="1.0" encoding="utf-16"?>
to <?xml version="1.0" encoding="utf-8"?>
?
Here is a code with encoding as parameter. Please read the comments why there is a SuppressMessage for code analysis.
/// <summary> /// Serialize an object into an XML string /// </summary> /// <typeparam name="T">Type of object to serialize.</typeparam> /// <param name="obj">Object to serialize.</param> /// <param name="enc">Encoding of the serialized output.</param> /// <returns>Serialized (xml) object.</returns> [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")] internal static String SerializeObject<T>(T obj, Encoding enc) { using (MemoryStream ms = new MemoryStream()) { XmlWriterSettings xmlWriterSettings = new System.Xml.XmlWriterSettings() { // If set to true XmlWriter would close MemoryStream automatically and using would then do double dispose // Code analysis does not understand that. That's why there is a suppress message. CloseOutput = false, Encoding = enc, OmitXmlDeclaration = false, Indent = true }; using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(ms, xmlWriterSettings)) { XmlSerializer s = new XmlSerializer(typeof(T)); s.Serialize(xw, obj); } return enc.GetString(ms.ToArray()); } }
Try this
public static void SerializeXMLData(string pth, object xmlobj) { XmlSerializer serializer = new XmlSerializer(xmlobj.GetType()); using (XmlTextWriter tw = new XmlTextWriter(pth, Encoding.UTF8)) { tw.Formatting = Formatting.Indented; serializer.Serialize(tw, xmlobj); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With