Até o momento, este é o último artigo sobre XML Literals. Os artigos anteriores mostraram diversas coisas importantes, como por exemplo, criar um arquivo XML, ler e pesquisar informação (usando LINQ e Lambda Expressions) e a utilização de embedded expressions, mas até agora ainda não falamos de alguns pontos essenciais para a manipulação desse tipo de arquivos: modificação, inserção e eliminação.
Neste artigo, será mostrado como fazer essas operações com base no seguinte arquivo XML, que terá o nome myFile.xml.
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!--Lista de livros e revistas>
<library>
<books>
<book name="Crepúsculo"author="Stephenie Meyer" />
<book name="Equador"author="Miguel S. Tavares" />
<book name="O Sétimo Selo"author="José R. dos Santos" />
</books>
<magazine>
<magazineName>MSDN Magazine</magazineName>
<magazineName>Code Magazine</magazineName>
</magazine>
</library>
Modificar
Para modificar um arquivo XML – após a leitura, é apenas necessário escolher o elemento a modificar e atribuir um novo valor. De acordo com o arquivo base, e para alterar no grupo Magazine de MSDN Magazine para outro valor, podíamos fazer:
Dim xmlFile = XDocument.Load(strFileName)
xmlFile...<magazineName>.Value = "Novo Valor"
Isso vai modificar o primeiro elemento que encontrar, uma vez que utilizamos a propriedade descendente, que, neste caso, é a que pretendemos. Para modificar um elemento especifico, podemos uma vez mais recorrer a Lambda ou a LINQ e selecionar apenas esse, como por exemplo, modificar um atributo no grupo books.
Dim xmlFile = XDocument.Load(strFileName)
Dim element = xmlFile.<library>.<books>.<book>.Where(Function(f) _
f.@name = "Equador")
element.@author = "Jorge Paulino"
Esse exemplo indica o caminho completo, mas podemos, mais uma vez, usar propriedade descendentes, simplificando o código (apenas em duas linhas):
Dim xmlFile = XDocument.Load(strFileName)
xmlFile...<book>.Where(Function(f) _
f.@name = "Equador").@author = "Jorge Paulino"
Inserir
Para inserirmos um novo elemento no arquivo XML, é necessário construir o novo XElement, e depois adiciona-lo à posição correta. Podemos fazer isso pelo menos de duas formas: criando um XElement e, em casos respectivos, XAtributes:
Dim xmlFile = XDocument.Load(strFileName)
Dim element = New XElement("book", _
New XAttribute("name", "XML Literals"), _
New XAttribute("author", "Jorge Paulino"))
Dim parent = xmlFile...<books>.FirstOrDefault()
parent.Add(element)
Ou diretamente no código:
Dim xmlFile = XDocument.Load(strFileName)
Dim element = <book name="XML Literals" author="Jorge Paulino"/>
Dim parent = xmlFile...<books>.FirstOrDefault()
parent.Add(element)
Nesse segundo exemplo, e caso queiramos substituir o valor dos atributos por uma variável, podemos usar Embedded Expressions, utilizando as tags <%= %>, como já explicado num artigo anterior.
Eliminar
Eliminar um elemento é bastante simples e semelhante à modificação.
Dim xmlFile = XDocument.Load(strFileName)
xmlFile...<magazineName>.Remove()
Esse exemplo mostra como remover os elementos com a tag magazineName. Mas atenção: esse exemplo elimina todos os elementos com a tag indicada. Para apagarmos apenas um elemento especifico, temos de indicar qual.
Dim xmlFile = XDocument.Load(strFileName)
xmlFile...<book>.Where(Function(f) f.@author = "Stephenie Meyer").Remove()
Em todos os exemplos mostrados, é necessário gravar as alterações efetuadas, usando simplesmente:
xmlFile.Save(strFileName)
Por enquanto é isso. Espero que esses exemplos de XML Literals, em conjunto com Lambda e LINQ, possam ajudar com uma mais fácil utilização de arquivos XML.
Participe e contribua com comentários, analise esta série de artigos e deixe suas impressões.
Até a próxima!