Nejrychlejší generování XML v novém Visual Basic 9

Tomáš Herceg       14.06.2008       VB.NET       10981 zobrazení

Nová verze jazyka Visual Basic 9, kterou nám přináší nové Visual Studio 2008 či Visual Basic 2008 Express Edition (neplést verzi jazyka, tj. 9, a verzi vývojového prostředí, tj. 2008), má několik nových vlastností, jako třeba Extension Methods, Partial Methods, LINQ, automatické konstruktory a možnost neuvádět datový typ v deklaracích, protože kompilátor z toho, co do proměnné přiřadíme, pozná, jakého typu proměnná bude. Toto přiřazení musí být mimo jiné už v deklaraci proměnné, jinak by to kompilátor vědět nemohl a nebylo by to tedy silně typové. Do Visual Basicu se rozhodně nevrací to, čeho jsme se před pár lety zbavili.

XDocument

Často využívám výše jmenované novinky, které nám Visual Basic 9 poskytuje. Šteří to čas i psaní a mnohdy i zvyšuje přehlednost. VB9 ovšem přináší ještě jednu věc, kterou nemá ani C# - možnost zápisu XML dokumentu přímo v kódu. Až dosud jsem si myslel, že to je k ničemu, ale dnes jsem potřeboval vygenerovat kousek XML a zjistil jsem, že je to mimořádně užitečné a pohodlné.

Generovat totiž celý dokument pomocí XmlTextWriteru je zbytečně otravné, zvláště když se v dokumentu mění dvě nebo tři hodnoty a zbytek je pořád stejný. Jiná možnost je uložit si XMLko do souboru, pak ten soubor načíst, provést pár nahrazení, k tomu ale musíte mít externí soubor, což se mi dělat nechtělo (ne že by to nešlo). Podle mě je velice elegantní tento zápis:

             Case "RSD"          'vygenerovat RSD manifest
text = <?xml version="1.0" encoding="utf-8"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
<service>
<engineName>Uraeus Publishing System</engineName>
<engineLink>http://www.herceg.cz/</engineLink>
<homePageLink><%= String.Format(Uraeus.Config.Publishing.BlogDisplayUrl, id).Replace("~", Uraeus.GetAbsoluteApplicationPath()) %></homePageLink>
<apis>
<api name="MetaWeblog" preferred="true" apiLink=<%= Uraeus.GetAbsoluteApplicationPath() & "MetaWeblog.axd" %> blogId=<%= id %>/>
</apis>
</service>
</rsd>

Je to rychlé a jednoduché, prostě nakopírujete pár řádků XML do kódu, nemusíte nic dávat do úvozovek a na patříčná místa dosadíte požadované hodnoty. Už chápu, k čemu tahle funkce je a začínám ji mít rád. Dodnes jsem si myslel, že to je úplně k ničemu.

 

hodnocení článku

2 bodů / 2 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Nejrychlejší generování XML v novém Visual Basic 9

Zdravím,

nevím si rady s následujícím: Vytvářím si XML soubor obsahující informace o hudebních stopách v mé ML a pro každý soubor vypadá XML zhruba takto:

                            <info>
                                <version type="original">
                                    <title><%= TextBox1.Text %></title>
                                    ...
                                    <composers>
                                        ???
                                    </composers>
                                </version>
                            </info>

A na místo otazníků bych chtěl dosadit <composer>Jméno Příjmení</composer> pro každého hudebníka v ListBox1.Items. Nevím ale, jak to napsat nějak flexibilně do té klauzule <%= =>.

Děkuji za případnou radu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pěkný článek o tom tady vyšel zde. Musí se ale použít LINQ, což ale není problém, dá se vybírat z jakékoliv kolekce:

http://www.code-magazine.com/article.asp...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skvělé, děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback