示例#1
0
        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);
        }
示例#2
0
        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);
            }
        }