示例#1
0
        /// <summary>
        /// Convert into XML. Store XML into a file with the specified name.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dataToSerialize">Any aribitary object</param>
        /// <param name="filePath">File storage location with file name</param>
        public static void Serialize <T>(this T dataToSerialize, string filePath)
        {
            if (dataToSerialize == null)
            {
                throw new ArgumentNullException(nameof(dataToSerialize));
            }

            if (String.IsNullOrWhiteSpace(filePath))
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            var namespaces = new XmlSerializerNamespaces();

            namespaces.Add(String.Empty, String.Empty);

            var serializer = new XmlSerializer(dataToSerialize.GetType());
            var settings   = new XmlWriterSettings
            {
                Encoding = new UTF8Encoding(false)
            };

            using (var fileStream = new FileStream(filePath, FileMode.Create))
                using (var writer = XmlWriter.Create(fileStream, settings))
                    using (var customXmlWriter = new CustomXmlWriter(writer)
                    {
                        AlwaysWriteFullEndElement = true
                    })
                    {
                        customXmlWriter.WriteDocType("boost_serialization", "", "xGG", "");
                        serializer.Serialize(customXmlWriter, dataToSerialize, namespaces);
                    }
        }
示例#2
0
        /// <summary>
        /// Get the List of T and serialize into XML Memory stream
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dataToSerialize"></param>
        /// <returns></returns>
        public static MemoryStream Serialize <T>(this T dataToSerialize)
        {
            try
            {
                if (dataToSerialize == null)
                {
                    throw new ArgumentNullException();
                }

                var namespaces = new XmlSerializerNamespaces();
                namespaces.Add("", "");

                var serializer = new XmlSerializer(dataToSerialize.GetType());
                var settings   = new XmlWriterSettings
                {
                    Encoding = new UTF8Encoding(false)
                };

                var memstream = new MemoryStream();
                var writer    = XmlWriter.Create(memstream, settings);
                using (var customXmlWriter = new CustomXmlWriter(writer)
                {
                    AlwaysWriteFullEndElement = true
                })
                {
                    customXmlWriter.WriteDocType("boost_serialization", "", "xGG", "");
                    serializer.Serialize(customXmlWriter, dataToSerialize, namespaces);
                }

                return(memstream);
            }
            catch
            {
                throw;
            }
        }