Usuário com melhor resposta
Serialização e gravação em arquivo xml

Pergunta
-
Olá a todos.
Estou com uma pequena dúvida em relação a serialização de objetos em arquivos .xml.
Eu tenho a seguinte classeCode Snippetusing 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
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 -
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 SnippetXmlTextWriter 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
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 -
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 SnippetXmlTextWriter 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
-
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