| MSDN Magazine Já está disponível a MSDN Magazine de Setembro 2009, que coincide também com uma remodelação da página MSDN Magazine. | |
| Revista PROGRAMAR Disponível também a revista Portuguesa de programação, já na 21ª edição (em formato pdf), com vários artigos sobre diversas temas, como a construção de diagramas de blocos, acesso de BD’s remotas a partir em Windows Mobile 6, a linguagem de programação Lua e o sistema de templates T4. Estes são alguns dos temas abordados na revista Link directo para Download Página oficial da revista PROGRAMAR Divulgação na comunidade Portugal-a-Programar | ![]() |
Este é o último artigo, por agora, sobre XML Literals. Os artigos anteriores mostraram diversas coisas importantes, como por exemplo, criar um ficheiro XML, ler e pesquisar informação (usando LINQ e Lambda Expressions), mas até agora ainda não foram referidos alguns pontos essenciais para a manipulação deste tipo de ficheiros: modificação, inserção e eliminação.
Neste artigo será mostrado como fazer estas operações com base no seguinte ficheiro 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 ficheiro XML, depois de o ler, é apenas necessário escolher o elemento a modificar e atribuir um novo valor. De acordo com o ficheiro 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"
Isto irá modificar o primeiro elemento que encontrar, uma vez que utilizamos a propriedade descendantes, que neste caso é a que pretendemos. Para modificar um elemento especifico, podemos uma vez mais recorrer a Lambda ou LINQ, e seleccionar 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"
Este exemplo indica o caminho completo, mas podemos, uma vez mais, usar a propriedade descendantes, 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 ficheiro XML, é necessário “construir” o novo XElement, e depois adiciona-lo à posição correcta. Podemos fazer isto pelo menos de duas formas: criando um XElement e os respectivos(caso existam) 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 directamente 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)
Neste 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()
Este exemplo mostra como remover os elementos com a tag “magazineName”. Mas atenção, este 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 efectuadas, usando simplemente:
xmlFile.Save(strFileName)
E para já é tudo!
Espero que estes exemplos de XML Literals, em conjunto com Lambda e LINQ, tenham ajudado a uma mais fácil utilização de ficheiros XML.
O FUTURO DA WEB NASCE AQUI | ![]() |
Dia 2 de Outubro, terá lugar o ReMIX no auditório da Reitoria da Universidade Nova de Lisboa: um dia completo com três tracks, 13 sessões e os melhores Oradores que fizeram palco no MIX 2009: Adam Kinney, Arturo Toledo, August de los Reyes, Brad Abrams, Simon Guest, a par com os nomes bem conhecidos (e reconhecidos) de José António Silva, Luis Alves Martins e Nuno Silva.
O ReMIX traz-lhe as tendência e a inovação Web: o futuro das tecnologias como o Silverlight, o Internet Explorer, Expression, ASP.NET e Windows Azure.
Para mais informações, agenda, oradores e registo:
http://www.microsoft.com/portugal/remix/index.aspx
Número de lugares limitado. 50€, com IVA incluído
Um dos benefícios do uso de XML Literals é a facilidade de ler informação e com isso melhorar o código e reduzir o tempo de desenvolvimento. Existem algumas formas de ler informação, como por exemplo LINQ ou Lambda Expressions, e como num artigo anterior já foi referido alguma coisa sobre LINQ, neste artigo será apenas utilizado Lambda.
Estes métodos de pesquisa serão a base para modificar dados, apagar ou inserir novos elementos, mas isto, será mostrado brevemente.
Ficheiro: “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>
A leitura de um ficheiro, começa sempre pela sua leitura para uma variável, e para isso utilizamos um XDocument. Depois, mediante o tipo de informação que queremos pesquisar/ler, utilizam-se diferentes métodos.
Nota: O nome do ficheiro está guardado na variável strFileName
Dim strFileName As String = "d:\myFile.xml"
Uma leitura simples de um elemento, por exemplo “magazineName”, será feito da seguinte forma:
Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<magazineName>.Value)
Tão simples com isto! Este método utiliza a propriedade descendants, que irá procurar todos os elementos que tenham a tag indicada.
O resultado, na Immediate Window será “MSDN Magazine”, ou seja, o primeiro elemento que encontrar. Mas podemos também procurar por um valor nos elementos com a mesma tag, neste caso 2, utilizando, por exemplo, Lambda.
Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<magazineName>.Where(Function(f) _
f.Value = "Code Magazine").Value)
Para mostrar um atributo da categoria <Books> o método é semelhante. Desta vez, como se trata de um atributo, é usado a “@”, seguido do nome do atributo.
Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<book>.@author)
Mas isto irá mostrar apenas o primeiro autor, do primeiro elemento. E se quisermos o nome do autor do livro “Equador” ? Podemos utilizar uma vez mais Lambda.
Dim xmlFile = XDocument.Load(strFileName)
Debug.WriteLine(xmlFile...<book>.Where(Function(f) _
f.@name = "Equador").@author)
Desta forma, pesquisamos o elemento cujo atributo name é igual a “Equador”, e mostramos o nome do author.
Estes são mais alguns exemplos que mostram como é simples ler informação de um ficheiro XML, usando XML Literals.
.png)
















