Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[VAZA]

WriteXML - Gravar conteudo novo mas mantendo conteudo antigo

Recommended Posts

Pessoal,

Toda vez que eu gravo dados de um DataSet em um arquivo XML, o C# limpa o arquivo para colocar os novos conteudos que eu possuo no DataSet.

Eu gostaria de manter os mesmos dados contidos no arquivo XML, porém quando eu escrever um novo conteúdo no arquivo XML, ele mantém os dados antigos e insere os novos dados no "final do arquivo". É como se eu tivesse "resumindo" um arquivo de dados.

Como posso fazer isso?

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde segue abaixo o meu codigo para gerar xml, vocÊ precisa modificar algumas coisas, mas espero que te ajude.

 

Essa classe é para gerar o XML

ClassXML

/*
 * Criado por SharpDevelop.
 * Usuário: Daniel
 * Data: 2/10/2009
 * Hora: 13:30
 * 
 * Para alterar este modelo use Ferramentas | Opções | Codificação | Editar Cabeçalhos Padrão.
 */
using System;
using System.Xml;
using System.Data;

namespace Portal.Util
{
	/// <summary>
	/// Description of ClassXML.
	/// </summary>
	public class ClassXML
    {
    private XmlDocument xmldoc;
    private XmlNode xmlnode;
    private string _xmlpath;
    public string XmlPath
    {
        get { return _xmlpath; }
        set { _xmlpath = value; }
    }

    public ClassXML() { }

    public XmlDocument GerarXML(DataTable tabela)
    {
        string parametros;

        xmldoc = new XmlDocument();
        xmlnode = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);
        xmldoc.AppendChild(xmlnode);

        // caso a tabela não possua nenhum nome geramos o nome TABELA 
        parametros = ((tabela.TableName.ToString() == null) ? "TABELA" : tabela.TableName.ToString().ToUpper());

        xmlnode = xmldoc.CreateElement(parametros.ToUpper());
        xmldoc.AppendChild(xmlnode);
        // Aqui começamos a criar toda estrutura do xml.    
        foreach (DataRow linha in tabela.Rows)
        {
            xmlnode = xmldoc.CreateElement("pic");
            for (int i = 0; i < linha.Table.Columns.Count; i++)
            {
                XmlNode xmlnode_parente = xmldoc.CreateElement(linha.Table.Columns[i].ColumnName.ToString().ToUpper(),
                                                               linha.Table.Columns[i].ColumnName.ToString().ToUpper(),
                                                               null);
                xmlnode_parente.InnerText = linha[i].ToString();
                xmlnode.AppendChild(xmlnode_parente);
                xmldoc.SelectSingleNode("/" + parametros.ToUpper() + "").AppendChild(xmlnode);
            }
        }      
        //local onde o xml é gerado
        xmldoc.Save("C:/Inetpub/wwwroot/macroplanportal/Documentos/ImageRotator.xml");
        //LimparDocumento();
		return xmldoc;
    }
    
    }
}

 

Após criar a classe, você usa esse método para pegar os valores das tags do xml, no meu caso eu pego do banco de dado, mas basta você ler o arquivo XML e gerar um DataTable passando-o para a classe acima.

 

 

Metodo Para Gerar o DataTable com os dados do XML antigo

/**
		 * Método que retorna DataTable para gerar um XML
		 */
		public DataTable LAllForXML()
		{			
			DataTable dt = new DataTable();
			dt = DTableAllForXML();
			
			DataTable tabela = new DataTable("images");
			tabela.Columns.Add("image");
			//ler os registros do banco
			foreach(DataRow dr in dt.Rows){
								
				//"~/Thumb.aspx?NomeImagem=" + t.Logotipo + "&Largura=120"
				tabela.Rows.Add("Thumb.aspx?NomeImagem=" + dr["nm_imglogo"] +"&Largura=120");
			}						
			
			return tabela;		    
		}

E por fim o método que chama o metodo acima

 

protected void GeraXMLFromDB() {

        ClassXML clsxml = new ClassXML();
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.ContentType = "text/xml";
        Response.Write(clsxml.GerarXML(new Portal.Clientes.ClienteAction().LAllForXML()).OuterXml);
        Response.End();

    }

Espero que ajude, alguma dúvida post aí.

 

Segue mais um link para ajudar a ler o xml:

 

Clique aqui

 

Abraço e Sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.