Sobreescrever xml delphi

Delphi

XML

19/04/2023

Bom dia,
estou com uma duvida, gostaria de saber se teria como eu sobrescrever um xml sem apagar o que já está nele, sem usar um ClientDataSet.

Eu tenho uma função onde eu crio o xml, e na minha tela de configuração de banco de dados eu tenho os dados para conexão nesta tela chamo a função. Gostaria de saber se teria como criar uma vez o xml depois ir salvando os dados nele sem apagar o que já tem lá.

segue a função que cria e alimenta o xml:
class function TMetodos.SetRegValue(key, value, data: string): boolean;
var
  XML: TXMLDocument;
  NodeTabela, NodeRegistro, NodeEndereco: IXMLNode;
begin
  try
    if not (FileExists((GetEnvironmentVariable('ProgramData') + '\Informatica\Fiscal\BancoDados.xml'))) then
    begin
      XML := TXMLDocument.Create(Application);
      XML.Active := True;
      NodeTabela := XML.AddChild('BancoDados');
      NodeRegistro := NodeTabela.AddChild('Valores');
    end;

    NodeRegistro.ChildValues[value] := data;


    XML.SaveToFile(GetEnvironmentVariable('ProgramData') + '\Informatica\Fiscal\BancoDados.xml');
  finally
    XML.Free;
  end;


segue parte do código que mando os dados para função:
   
       TMetodos.SetRegValue('\Informatica\Fiscal', 'Servidor', dtEstacaoServidora.Text);
        TMetodos.SetRegValue('\Informatica\Fiscal', 'CaminhoBanco', dtCaminho.Text);
        TMetodos.SetRegValue('\Informatica\Fiscal', 'Porta', dtPorta.Text);



deste jeito está apenas gravando o servidor, acredito que com ClientDataSet daria certo, mas sem ele teria possibilidade também?

Obrigado
Igor Oliveira

Igor Oliveira

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

19/04/2023

Não sei se entendi a dúvida.

Seu programa verifica se um determinado arquivo existe. Se não existe, ele cria o componente XML vazio, acrescenta o "BancoDados" e salva.

Porém, na segunda execução, o arquivo já existe e o componente nem é criado. Deveria apresentar erro ao salvar, já que a classe nem foi instanciada.

Acredito que você tenha que implementar o "else" do seu "if", indicando como criar a classe e carregar o arquivo existente, para que ele possa ser complementado.
GOSTEI 0
POSTAR