terça-feira, 17 de fevereiro de 2009

.NET Framework 3.5 - LINQ to XML

LINQ to XML provê uma interface de programação [in-memory] com [Modelo de Objeto de Documentos - DOM].

O interessante deste novo recurso é que ficou mais fácil a manipulação de XMLs (comparando por exemplo ao uso do XPATH) pois este tipo de objeto é manipulado através de Queries, similar a manipulação no SQL.

O exemplo abaixo mostra a facilidade de uso. Está sendo retornada uma lista, ordernado pelo campo partnumber, dos itens com valor maior do que 100.


[C#]
IEnumerable partNos =
from item in purchaseOrder.Descendants("Item")
where (int) item.Element("Quantity") *
(decimal) item.Element("USPrice") > 100
orderby (string)item.Element("PartNumber")
select item;


[Visual Basic]
Dim partNos = _
From item In purchaseOrder... _
Where (item..Value * _
item..Value) > 100 _
Order By item..Value _
Select item


A melhoria na manipulação da interface de programação XML é realmente significativa. Inclusive podemos fazer todo tipo de manipulação, como fariamos em uma programação XML, sendo elas:

- Carregar XML de arquivos ou streams.
- Serializar XML para arquivos ou streams.
- Query XML usando [XPath-like].
- Manipular a [árvore XML] in-memory usando métodos comm Add, Remove, ReplaceWith, e SetValue.
- Validar a [árvore XML] usando XSD.

Para exemplificar a facilidade na criação da árvore em XML, note o código abaixo:


[C#]
XElement contacts =
new XElement("Contacts",
new XElement("Contact",
new XElement("Name", "Patrick Hines"),
new XElement("Phone", "206-555-0144",
new XAttribute("Type", "Home")),
new XElement("phone", "425-555-0145",
new XAttribute("Type", "Work")),
new XElement("Address",
new XElement("Street1", "123 Main St"),
new XElement("City", "Mercer Island"),
new XElement("State", "WA"),
new XElement("Postal", "68042")
)
)
);


E no Visual Basic o uso é ainda mais simplificado, pois usa-se o XML de forma literal:


[Visual Basic]
Dim contacts = _
< Contacts >
< Contact >
< Name >Patrick Hines< /Name >
< Phone Type="Home" >206-555-0144< /Phone >
< Phone Type="Work">425-555-0145< /Phone >
< Address >
< Street1 >123 Main St< /Street1 >
< City> Mercer Island< /City >
< State >WA< /State >
< Postal >68042< /Postal >
< /Address >
< /Contact >
< /Contacts >


________________________________
101 Visual Basic LINQ Samples! - http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx

Nenhum comentário:

Postar um comentário

<< Ao enviar um comentário, favor clicar na opção [Enviar por e-mail comentários de acompanhamento para gtezini@gmail.com] >>