public static XmlDocument Serialize(object obj, int ver, string rootName) { // determine serialization options SerializationOptions serOptions = new SerializationOptions(); if (obj != null) { Type objType = obj.GetType(); object[] attribs = objType.GetCustomAttributes(typeof(CustomXmlSerializationOptionsAttribute), false); if (attribs.Length > 0) { serOptions = ((CustomXmlSerializationOptionsAttribute)attribs[0]).SerializationOptions; } } // create serializer CustomXmlSerializer serializer = new CustomXmlSerializer(serOptions); XmlElement element = serializer.SerializeCore(rootName, obj); element.SetAttribute("version", ver.ToString()); element.SetAttribute("culture", Thread.CurrentThread.CurrentCulture.ToString()); // add typeinfo XmlElement typeInfo = serializer.GetTypeInfoNode(); if (typeInfo != null) { element.PrependChild(typeInfo); element.SetAttribute("hasTypeCache", "true"); } // add serialized data serializer.doc.AppendChild(element); return(serializer.doc); }
public static void SaveToXml(object o, string filename, int version, bool encrypt = false) { try { XmlDocument doc = CustomXmlSerializer.Serialize(o, version, "AMS_FILE"); if (!encrypt) { doc.Save(filename); } else { FileStream fileStream = new FileStream(filename, FileMode.Create); fileStream.Write(XmlFileReader.EncHeader, 0, 10); GZipStream compressStream = new GZipStream(fileStream, CompressionMode.Compress); doc.Save(compressStream); compressStream.Close(); fileStream.Close(); } } catch (Exception ex) { throw new Exception("Fehler beim Schreiben zu Xml Datei", ex); } }