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

Tomáš Herceg       14. 6. 2008       VB.NET       7186 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