Logo depois de eu escrever o post anterior sobre XML Axis Properties e LINQ eu fico sabendo desse novo projeto da Microsoft, ainda em Alpha, mas liberado para a comunidade: Linq To XSD. Como o projeto ainda está muito no começo, esse nome pode não ficar.
Ele oferece uma solução de X/O Mapping, ou seja, mapeamento XML para Objeto. Ele cria objetos para o seu XML. E o legal é que ele o faz a partir de um schema XSD, e mantém suas restrições, tipos e outros detalhes. Por exemplo, vocês devem ter notado que tive que fazer cast para recuperar uma propriedade booleana do XML:
10 Dim blnLogLigado As Boolean = CBool(consultaXML.<app>.@logLigado)
Com LINQ to XSD isso não precisaria ser feito. Veja como fica:
14 static void Main(string[] args)
15 {
16
17 var ArquivoXML = Path.Combine(
18 Directory.GetParent
19 (
20 Path.GetDirectoryName
21 (
22 Assembly.GetExecutingAssembly().Location
23 )
24 ).Parent.FullName,
25 @"configuracoes.xml");
26 var config = algumacoisa.configuracoes.Load(ArquivoXML);
27 Console.WriteLine(@"O id da aplicação é ""{0}"" e o log está {1}.",
28 config.app.appId.ToString(),
29 config.app.logLigado ? "ligado" : "desligado");
30
31 Console.WriteLine("Caminhos:");
32
33 foreach (var caminho in config.caminhosDePesquisa.caminho)
34 {
35 Console.WriteLine(@"O endereço ""{0}"" está {1}.",
36 caminho.enderecoFisico,
37 caminho.habilitado ? "habilitado" : "desabilitado");
38 }
39 }
O problema foi corrigido. Note que os dados AppID e LogLigado já estão convertidos para o tipo correto (linhas 28 e 29).
Ah, é legal observar, já que falei do VB no post anterior, que isso praticamente resolve o problema de acesso ao XML que o C# tinha antes, apesar de ainda estarem em fase Alpha e sem previsão de lançamento.
E como eu não tinha mostrado ainda o resultado final, segue abaixo:
Se quiserem saber mais comentem aqui no blog que eu dou uma aprofundada.
Postado na(s) categoria(s)
LINQ
pelo
Giovanni Bassi em 27 de fevereiro de 2008 às 16:23
| Tags:
linq,
preview
Ninguém avaliou. Dê sua nota!
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5