Return to Snippet

Revision: 16221
at July 29, 2009 09:56 by marcocs


Initial Code
namespace You.Xml
{
    #region IMPORTS

    using System;
    using System.IO;
    using System.Text;
    using System.Xml;
    using System.Xml.Serialization;

    #endregion

    /// <summary>
    /// Utilidad de serialización de objetos;
    /// Se utiliza este class para crear set de datos xml a partir de un prototipo;
    /// </summary>
    public class XmlSerialization
    {
        /// <summary>
        /// Serializa un objeto utilizando el tipo especificado.
        /// </summary>
        /// <param name="pObject">objeto a serializar</param>
        /// <param name="type">tipo de objeto a serializar</param>
        /// <returns>string (xml)</returns>
        public static string Serialize(object pObject, Type type)
        {
            try
            {
                String XmlizedString = null;
                MemoryStream memoryStream = new MemoryStream();
                XmlSerializer xs = new XmlSerializer(type);
                using (XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8))
                {
                    xs.Serialize(xmlTextWriter, pObject);
                    memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
                    XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
                }
                return XmlizedString;
            }
            catch (Exception) { return null; }
        }

        /// <summary>
        /// Deserializa una string xml UTF8 en un objeto
        /// </summary>
        /// <param name="data">string xml</param>
        /// <param name="type">tipo a serializar</param>
        /// <returns>objeto deserializado</returns>
        public static object Deserialize(string data, Type type)
        {
            using (TextReader rd = new StringReader(data))
            {
                XmlSerializer sr = new XmlSerializer(type);
                return sr.Deserialize(rd);
            }
        }

        /// <summary>
        /// Conversión de byte[] a strings UTF8
        /// </summary>
        /// <param name="characters">byte[] a convertir</param>
        /// <returns>string</returns>
        static string UTF8ByteArrayToString(byte[] characters)
        {
            String constructedString = new UTF8Encoding().GetString(characters);
            return (constructedString);
        }

        /// <summary>
        /// Conversión de un string UTF8 a byte[];
        /// </summary>
        /// <param name="pXmlString">string a convertir.</param>
        /// <returns>byte[] del estring</returns>
        static byte[] StringToUTF8ByteArray(String pXmlString)
        {
            byte[] byteArray = new UTF8Encoding().GetBytes(pXmlString);
            return byteArray;
        }

    }
}

Initial URL


Initial Description
Utilidad de serialización de objetos;
Utiliza este class para crear datos xml a partir de un prototipo;

Initial Title
Serialize/Deserialize

Initial Tags


Initial Language
C#