Hola Pata, perdón por no ahondar en la solución :)

te mando mi clase, en C#. es muy simple, supongo que se puede traducir
fácilmente a VB. Lo que tiene de bueno es que usa generics ;)
ahora estoy viendo cómo sacar los namespaces.

public static class Serializer
        {
                public static string Serialize<T>(T serializable)
                {
                        XmlSerializer serializer = new
XmlSerializer(typeof(T));
                        
                        StringWriter buffer = new StringWriter();

                        XmlWriter writer = XmlWriter.Create(buffer,
SimpleXmlWriterSettings);

                        try
                        {
                                serializer.Serialize(writer, serializable);

                                return buffer.ToString();
                        }
                        catch
                        {
                                // TODO: Do something.
                                return String.Empty;
                        }
                        finally
                        {
                                if (writer != null) writer.Close();
                        }
                }

                public static T Deserialize<T>(string xml)
                {
                        XmlSerializer serializer = new
XmlSerializer(typeof(T));

                        StringReader reader = new StringReader(xml);

                        try
                        {
                                return (T)serializer.Deserialize(reader);
                        }
                        catch
                        {
                                // TODO: Do something.
                                return default(T);
                        }
                        finally
                        {
                                if (reader != null) reader.Close();
                        }
                }

                public static XmlWriterSettings SimpleXmlWriterSettings
                {
                        get
                        {
                                XmlWriterSettings settings = new
XmlWriterSettings();

                                settings.CloseOutput = true;
                                settings.OmitXmlDeclaration = true;
                                settings.NewLineChars = String.Empty;
                                settings.Indent = false;

                                return settings;
                        }
                }
        } 

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Pata del
Santo
Sent: Wednesday, October 18, 2006 3:16 PM
To: puntonet List Member
Subject: [puntonet] RE: [puntonet] Serialización XML sin <?xml ... ?>

Te paso la función genérica que hice para serializar cualquier objeto:

        Public Shared Function ObjectToXml(ByVal pObject As Object) As
String
                'uso:  Dim strXML as String = ObjectToXml(cualquierObjeto)
            Dim xmlser As New
System.Xml.Serialization.XmlSerializer(pObject.GetType)
            Dim sr As New System.IO.StringWriter
            xmlser.Serialize(sr, pObject)
            Dim s As String = sr.ToString
            sr.Close()
                'esto se queda así hasta que Damian Janowski nos tire una
solucion...
            s = s.Replace("encoding=""utf-16""", "encoding=""iso-8859-1""")
            s = s.Replace(" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""";,
"")
            s = s.Replace("
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""";, "")
            Return s
        End Function

Como ves, me cansé de investigar cómo customizar la declaración y lo parseo
a mano... jajaja Podrías mejorarlo para que directamente le quite todo el
<?xml...?>

Pata.

-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Damian
Janowski Enviado el: miércoles, 18 de octubre de 2006 19:47
Para: puntonet List Member
Asunto: [puntonet] Serialización XML sin <?xml ... ?>

Hola gente,

Estoy decorando mis clases con los atributos de serialización para luego
utilizar el XmlSerializer.

La pregunta es cómo hacer que el output se genere SIN la declaración XML
(<?xml.... ?>) ?

Algo mejor que parsear el string? :(

Gracias!

Damián




Responder a