streda 3. októbra 2007

LINQ to XML - XDocument a String

V tomto príspevku sú vyzdvihované XML literály jazyka VB9 v porovnaní s C# 3.0. Hlavnou výhodou XML literálov je sprehľadnenie kódu. Podobný výsledok môžeme však jednoducho dosiahnúť aj v C# 3.0 vytvorením vlastnej rozšírujúcej metódy (extension method), ktorá bude parsovať reťazec na XDocument takto:


   1:  using System;

   2:  using System.Xml.Linq;

   3:   

   4:  namespace StringToXDocument

   5:  {

   6:      public class Program

   7:      {

   8:          static void Main(string[] args)

   9:          {

  10:              XDocument doc = @"<book>

  11:                                    <title>Pro WCF</title>

  12:                                    <publisher>APress</publisher>

  13:                                </book>".ToXDocument();

  14:          }

  15:      }

  16:   

  17:      public static class StringExtensions

  18:      {

  19:          public static XDocument ToXDocument(this string text)

  20:          {

  21:              return XDocument.Parse(text);

  22:          }

  23:      }

  24:  }

2 komentáre:

Anonymný povedal(a)...

Rozdil oproti VB tu je ale docela zasadni - jednak se musi XML parsovat za behu, coz je pomale a druhak (coz je asi dulezitejsi), nelze do XML snadno vkladat hodnoty promennych (napr. jako text elementu ci atributu).

Marián Košťál povedal(a)...

Suhlasim s tebou. Mojim cielom nebolo vytvorit ekvivalent XML literals z VB9. Chcel som iba ukazat sposob ako prehladne vytvorit XML dokument bez pouzitia XElement a XAttribute. Parsovanie za behu znamena spomalenie, ale v niektorych pripadoch ako napr. unit testy moze moje riesenie sprehladnit kod.