none
Serialização e gravação em arquivo xml RRS feed

  • Pergunta

  • Olá a todos.

    Estou co
    m uma pequena dúvida em relação a serialização de objetos em arquivos .xml.

    Eu tenho a seguinte classe

    Code Snippet

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.IO;

    using System.Xml.Serialization; 


    namespace Artigo.Serializacao

    {

        public class Serializador

        {

            public static string Serializar(object algumObjeto)

            {

                StringWriter writer = new StringWriter();

                XmlSerializer serializer = new

    XmlSerializer(algumObjeto.GetType());

    serializer.Serialize(writer,algumObjeto);

                return writer.ToString();

            }

            public static object Deserializar(string xml, Type type)

            {

                StringReader reader = new StringReader(xml); 

                XmlSerializer serializer = new XmlSerializer(type); 

               return serializer.Deserialize(reader);

           }

       }

    }


    Como podemos notar, o método "Serializar" retorna um String com todo o "conteúdo" do objeto serializado.

    A minha dúvida é eu pegar esse conteúdo retornado e grava-lo em um arquivo .xml (não .txt) em disco.

    Espero ter sido claro.

    Aguardo anciosamento uma resposta, dica, ajuda...

    Att,

    Felipe
    sexta-feira, 25 de julho de 2008 20:24

Respostas

  • XMLDocument xml = new XMLDocument()
    xml.LoadXML(SuaString)
    xml.Save(Stream/NomeArquivo)

    Isso se quiser usar algum recurso de formatação ou transformação.
    Caso contrário, só abrir um StringWriter ou FileStream e salvar o conteúdo da string com extensão .XML
    domingo, 27 de julho de 2008 14:13
  • Felipe,

     

    Você fez o mais difícil. O Ato de serializar consiste de pegar algo da memória e serializar em algum outro meio, ou seja, você pode serializar algo da memória direto pro disco.

     

    O método Serialize, vai escrever o conteúdo do seu objeto no Writer que você fornecer pra ele. Como você passou um StringWriter,  o serialize vai escrever na string. Se você deseja escrever em um arquivo basta passar um Writer para arquivo, ou seja, trocar a primeira linha do método serializar por:

     

    Code Snippet
    XmlTextWriter writer = new XmlTextWriter(@"c:\arquivo.xml", System.Text.Encoding.UTF8);

     

     

    o método Serialize não retorna nada ... então você pode tranformá o seu método Serializar num método void e assim remover a linha de retorno da string

     

    Ficou claro?

    Abraços

    André Dias

    domingo, 27 de julho de 2008 14:15

Todas as Respostas

  • XMLDocument xml = new XMLDocument()
    xml.LoadXML(SuaString)
    xml.Save(Stream/NomeArquivo)

    Isso se quiser usar algum recurso de formatação ou transformação.
    Caso contrário, só abrir um StringWriter ou FileStream e salvar o conteúdo da string com extensão .XML
    domingo, 27 de julho de 2008 14:13
  • Felipe,

     

    Você fez o mais difícil. O Ato de serializar consiste de pegar algo da memória e serializar em algum outro meio, ou seja, você pode serializar algo da memória direto pro disco.

     

    O método Serialize, vai escrever o conteúdo do seu objeto no Writer que você fornecer pra ele. Como você passou um StringWriter,  o serialize vai escrever na string. Se você deseja escrever em um arquivo basta passar um Writer para arquivo, ou seja, trocar a primeira linha do método serializar por:

     

    Code Snippet
    XmlTextWriter writer = new XmlTextWriter(@"c:\arquivo.xml", System.Text.Encoding.UTF8);

     

     

    o método Serialize não retorna nada ... então você pode tranformá o seu método Serializar num método void e assim remover a linha de retorno da string

     

    Ficou claro?

    Abraços

    André Dias

    domingo, 27 de julho de 2008 14:15
  • Valeu pessoal pelas respostas... as duas respostas me servirão rsrs.

    A primeira porque posso manipular o arquivo xml, e a segunda principalmente, pois era isso que eu queria, não sei como não percebi que poderia gravar diretamente no disco xD. Talvez seja falta de esperiencia minha ainda...mas seguiremos firme hehehe.

    Grande abraço.

    Até.


    Felipe
    segunda-feira, 28 de julho de 2008 17:43