Às vezes precisamos gravar e/ou pesquisar dados em arquivos XML para alimentar uma base de dados ou extrair dados dela e utilizar para outros fins, então, começamos a nos perguntar: Como fazer isso?
Em versões anteriores do .NET Framework há outras formas de fazê-lo, mas que, em termos de performance, são consideradas mais dispendiosas. Na versão 3.5 do .NET Framework recebemos um presente que vai agilizar muito o andamento dos nossos projetos: O LINQ! E como não poderia deixar de ser, temos também o LINQ TO XML, para trabalhar com arquivos em XML de forma rápida e fácil, sem grandes dores de cabeça.
O LINQ TO XML está implementado no Namespace System.XML.LINQ, portanto, esse será nosso ponto de partida.
Então mãos a obra!
Adicione entre as Using do projeto, o Namespace System.XML.LINQ, para que possamos utilizar as classes do LINQ TO XML durante o Desenvolvimento do nosso raciocínio.
As usings do Projeto deverão ficar assim:
Imagem 1: usings
Além do Namespace System.XML.Linq, implementamos o System.IO, que utilizarmos logo a seguir, na explicação do código.
Imagem 2: Método de inserção de dados
Muito bem senhores, aqui iniciamos o nosso trabalho propriamente dito. Apesar de o LINQ TO XML ter muitas classes para nossa utilização, trabalharemos, aqui, apenas com o XElement, pois ele tem o poder que precisamos para executar nossa tarefa. Caso queira entender com mais profundidade o LINQ TO XML, aqui, terá informações mais aprofundadas.
Embora tenha colocado todo o código, vou explicá-lo linha a linha.
Primeiro, criamos uma instância global do XElement e o denominamos objXElement. Sendo ela global, poderemos utilizar a mesma instância em todos os nossos métodos, lembrando que não estamos pensando em otimização, mas no aprendizado da classe. A performance dependerá do contexto em que você irá utilizá-la.
Depois de criar a instância, já podemos começar a utilizá-la:
Criei um procedimento que fará a gravação dos dados, e esse procedimento, recebe como parâmetro o caminho do arquivo onde serão gravados os dados. Inicialmente, verificamos então, se o arquivo passado como parâmetro existe(é aí que a classe System.IO entra em ação), caso ele não exista, criamos o elemento"Dados" e, através do método Save, criamos o arquivo. Depois disso, começamos a passar para o a instância do XElement (objXElement) os dados que futuramente ele gravará no arquivo físico.
Primeiro, criamos o Elemento "Aluno", depois, começamos a setar "subelementos" deste Elemento, utilizando o método SetElementValue, que recebe como parâmetro o nome do elemento que será criado e o valor que este elemento terá. No nosso exemplo, temos Nome, Turma e Curso, que recebem os valores de alguns TextBox que foram colocados na página. Mas, você poderia criar quantos quisesse, de acordo com a sua necessidade e preencher os elementos com dados oriundos da sua base de dados, por exemplo.
Neste momento já podemos ver, através do DEBUG do Visual Studio, o corpo do que será adicionado ao arquivo XML.
--> Marcadores: por onde começar