Gincsai Gábor Dávid Zoltán MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék LINQ to Xml és Visual Basic 9 újdonságok
Xml kezelés LINQ-val A megújult Visual Basic Tartalom
3 Xml mindenhol van Konfigurációs állományok Webszolgáltatások, RSS Hierarchikus adatok tárolása Platformfüggetlen kommunikáció
4 Korábbi módszerek XmlReader / XmlWriter Hatékony, de nehézkes Hatékony, de nehézkes DOM Sok adatnál lassú XSLT Kevésbé mély struktúrájú adatokra Kevésbé mély struktúrájú adatokra Nehéz megtanulni Sok adatnál
5 Elvárások… XML támogatás C# és VB szinten Kevés tanulás Átmenteni a meglévő tudást, eszközöket Letisztult, világos felhasználás XQuery, XSLT támogatás IDE támogatás
6 LINQ to Xml Megmaradnak a DOM, Xml könyvtárak Új API az „Orcas”-ban Nyelvbe ágyazott lekérdezés ( C# / VB 9 ) XML támogatás XPath, XSLT ismeret nélkül VB 9 még többet nyújt XML közvetlenül VB-ből Lekérdezések VB szintaktikával System.Xml.LinqSystem.Xml.Linq
7 Fontosabb osztályok XDocument XElement XAttribute XComment XDeclaration XProcessingInstruction
8 Xml létrehozása XElement xml = new XElement("contacts", new XElement("contact", new XAttribute("contactId", "1"), new XElement("firstName", "Gábor"), new XElement("lastName", "Gincsai") ), new XElement("contact", new XAttribute("contactId", "2"), new XElement("firstName", "Zoltán"), new XElement("lastName", "Dávid") ) ); Console.WriteLine(xml); XElement xml = new XElement("contacts", new XElement("contact", new XAttribute("contactId", "1"), new XElement("firstName", "Gábor"), new XElement("lastName", "Gincsai") ), new XElement("contact", new XAttribute("contactId", "2"), new XElement("firstName", "Zoltán"), new XElement("lastName", "Dávid") ) ); Console.WriteLine(xml);
9 Gábor Gincsai Zoltán Dávid Az elkészített Xml
10 XDocument létrehozása XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XComment(„RSS Feed"), new XElement("rss", new XAttribute("version", "2.0"), new XElement ("channel", new XElement("title", "RSS csatorna címe"), new XElement("description", "RSS csatorna leírás"), new XElement("link", " new XElement("item", new XElement("title", „Első cikk"), new XElement("description", „Első leírás"), new XElement("pubDate", DateTime.Now.ToString()), new XElement("guid", Guid.NewGuid())) ) ) );
11 RSS csatorna cím RSS csatorna leírás. Első cikk címe Első leírás :12:30 11e7e86b-1ad6-465a-8f74-cf00be28aaba Az elkészített Xml doksi
12 // Lekérdezés összeállítása és eredmény kiírása var q = from c in xml.Descendants("contact") where (int)c.Attribute("contactId") < 2 select (string)c.Element("firstName") + " " + (string)c.Element("lastName"); foreach (string name in q) Console.WriteLine("Név = {0}", name); // Lekérdezés összeállítása és eredmény kiírása var q = from c in xml.Descendants("contact") where (int)c.Attribute("contactId") < 2 select (string)c.Element("firstName") + " " + (string)c.Element("lastName"); foreach (string name in q) Console.WriteLine("Név = {0}", name); Xml lekérdezés C# Név = Gincsai Gábor Név = Dávid Zoltán
13 13 Xml kezelés LINQ-val Xml létrehozása Xml lekérdezés készítése Mindez Visual Basic-ben
14 Xml kezelés LINQ-val A megújult Visual Basic Tartalom
15 Implicit típusú lokális változók Nem kell “feleslegesen” kiírni a típusokat A változó típusa a jobb oldalon álló kifejezés típusa lesz Visual Studio támogatás Dim szam = 3 Dim szoveg = “Sziasztok” Dim tort = 1.9 … Dim tomb() = { egyik, masik } Dim szam = 3 Dim szoveg = “Sziasztok” Dim tort = 1.9 … Dim tomb() = { egyik, masik }
16 Objektumok inicializálása A With-hez hasonló szintaxis De egy kifejezés! Dim orszag = New Country With { _.Name = "Magyarország", _.Area = 93000, _.Population = _ } Dim orszag = New Country With { _.Name = "Magyarország", _.Area = 93000, _.Population = _ }
17 Tömbök inicializálása Dim countries() = { _ New Country With {.Name = "Palau",.Area = 458,... }, _ New Country With {.Name = "Monaco",.Area = 1.9,... }, _ New Country With {.Name = "Belize",.Area = 22960,... } _ New Country With {.Name = "Madagascar",.Area = ,...} _ New Country With {.Name = "Magyarország",.Area=... } _ } Dim countries() = { _ New Country With {.Name = "Palau",.Area = 458,... }, _ New Country With {.Name = "Monaco",.Area = 1.9,... }, _ New Country With {.Name = "Belize",.Area = 22960,... } _ New Country With {.Name = "Madagascar",.Area = ,...} _ New Country With {.Name = "Magyarország",.Area=... } _ }
18 Lekérdezések – Query Expressions SQL-szerű lekérdezések a nyelvben Gyűjteményeken használható Alapvetően a fordító szolgáltatása Dim smallCountries = From country In countries _ Where country.Population < _ Select country For Each country In smallCountries Console.WriteLine( country.Name ) Next Dim smallCountries = From country In countries _ Where country.Population < _ Select country For Each country In smallCountries Console.WriteLine( country.Name ) Next
19 Névtelen típusok A fordító készít osztályt ha szükséges Osztálynév = Név + típus + sorrend Dim smallCountries = From country In countries _ Where country.Population < _ Select country.Name, country.Population Class _Name_As_String_Population_As_Long_ Public Property Name As String Public Property Population As Long... End Class Dim smallCountries = From country In countries _ Where country.Population < _ Select country.Name, country.Population Class _Name_As_String_Population_As_Long_ Public Property Name As String Public Property Population As Long... End Class
20 Tömör metódusreferencia Sub OnClick(sender As Object, e As EventArgs) Handles btn.Click MessageBox.Show("Hello World from" & btn.Text)) End Sub Sub OnClick(sender As Object, e As Object) Handles btn.Click MessageBox.Show("Hello World from" & btn.Text)) End Sub Sub OnClick Handles btn.Click MessageBox.Show("Hello World from" & btn.Text)) End Sub Sub OnClick(sender As Object, e As EventArgs) Handles btn.Click MessageBox.Show("Hello World from" & btn.Text)) End Sub Sub OnClick(sender As Object, e As Object) Handles btn.Click MessageBox.Show("Hello World from" & btn.Text)) End Sub Sub OnClick Handles btn.Click MessageBox.Show("Hello World from" & btn.Text)) End Sub
21 Erős XML támogatás ASP.NET-szerű XML összeállítás Csak a VB! Dim countryXml As XElement = _ <%= From country In countries _ Select Area= > _ %> Dim countryXml As XElement = _ <%= From country In countries _ Select Area= > _ %>
22 Erős XML támogatás Nagyon könnyű XML feldolgozás For Each country in countryXml. Console.WriteLine( ) Console.WriteLine( ) Next For Each country in countryXml. Console.WriteLine( ) Console.WriteLine( ) Next
23 Összefoglalás Xml kezelés egyszerűen és hatékonyan Implicit típusú lokális változók Objektumok és tömbök inicializálása Lekérdezések Névtelen típusok Tömör metódusreferencia Nagyon erős XML támogatás a VB-ben
24 24
25 25
26 © 2007 Microsoft Corporation. Minden jog fenntartva. Az előadás csupán tájékoztató jellegű, a Microsoft Magyarország a benne szereplő esetleges hibákért vagy tévedésekért semmilyen felelősséget nem vállal.