.Net előadás jegyzet 7. óra. .NET és az XML

Hasonló dokumentumok
Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Bánsághi Anna

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Általános nyomtatványok xml szerkezete. (v1.3)

Kalapácsvetés 2016 szöveges

Széchenyi István Egyetem

XML. Document Type Definitions (DTD) XML séma

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

C#, OOP. Osztályok tervezése C#-ban

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Java programozási nyelv 6. rész Java a gyakorlatban

.NET alapszolgáltatások 2.

Programozási nyelvek Java

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Web-fejlesztés NGM_IN002_1

Entity Framework alapú adatbáziselérés

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

INFORMATIKAI ALAPISMERETEK

A szoftver és hardverfüggetlen adatbázis

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Mentsd el code file-t kektura.cs néven, illetve kiterjesztéssel! Másold be a kektura.csv állományt a Projects munkamappa megfelelő almappájába!

XML adatkezelés. 5. témakör. Nincs explicit névtér kijelölve. <?xml version="1.0"?> <xs:schema xmlns:xs="

Entity Framework alapú adatbáziselérés

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Java és web programozás

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

INFORMATIKAI ALAPISMERETEK

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

BME MOGI Gépészeti informatika 13.

OOP #14 (referencia-elv)

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Access adatbázis elérése OLE DB-n keresztül

Adatbázis rendszerek 7. előadás State of the art

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

az XML egy leírónyelv, másnéven meta-nyelv, mely segítségével új nyelveket írhatunk le egy XML dokumentum egy ilyen nyelvnek a példánya, a formális

SQLServer. DB Recovery modes

Metamodellezés. Simon Balázs BME IIT, 2011.

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Bánsághi Anna

Térinformatikai (GIS) és CAD adatmodellek és adatformátumok Digitális térképek előállítási technológiái, metaadatok szerepe

A JavaServer Pages (JSP)

INFORMATIKAI ALAPISMERETEK

Zenetár a webszerverünkön,

Modellező eszközök, kódgenerálás

BME MOGI Gépészeti informatika 4.

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

A fejlesztendő tananyagok formai követelményei

1. Az XML és XHTML nyelvek. Az XML leíró nyelv Szabályok XHTML írásra. Tartalom Az XML leíró nyelv

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Bevezetés a Python programozási nyelvbe

AWK programozás, minták, vezérlési szerkezetek

ArcGIS Desktop QGIS GRASS AutoCAD Map ITR. Op. rendszer Win Linux, Win, OSX Unix, CygWin, (Win) Win korábban DOS, Win. GRASS specific GDAL/OGR

Java és web programozás

Java és web programozás

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

Bevezető. Servlet alapgondolatok

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Programozási nyelvek Java

A JavaServer Pages (JSP)

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Segédanyag: Java alkalmazások gyakorlat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

4. Öröklődés. Programozás II

Java gyakorlat feladatai e s megolda sai ( )

Java és web programozás

Programozási technológia

Generikus Típusok, Kollekciók

Summer of LabVIEW The Sunny Side of System Design

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

AWK programozás Bevezetés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

10.óra CodeIgniter Framework #3. Gyimesi Ákos

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Átírás:

1.oldal.NET és az XML XML alapok Mi ez? Mire jó? Extensible Markup Language(Kiterjeszthető Leíró Nyelv) rövidítése. Arra szolgál, hogy félig strukturált formában írjunk le különböző adatokat. XML dokumentumokról beszélünk, ami egymásba ágyaszott nodeokból áll, ezekhez kapcsolunk attribútumokat. Hasonlít a html-hez, html tag-ekhez. Fastruktúra szerűen néz ki, egymásba ágyazható. - jól formázott XML (pi, node, attribútumok, komment) jól formázott ha a nyító-csukó TAG-ek sorrendej megfelelő, és megfelelően ágyazódnak egymásba Példa: <?xml version="1.0" encoding="utf-8"?> <RootNode> <SubNode attr="akarmi"> <UresNode attrusernode="asdfasd" /> </SubNode> <!-- komment --> </RootNode> <?xml> ezzel kezdődik és verzió, milyen kódolás,... stb. írható Egy gyökér lehet! <nev> jel közé node neve </nev>lezárása node-nek nem akarunk bele tenni plusz nodet: <... /> xmllex.xml néven mentem. Internet Explorer-el megnézem, ha nem jó kiírja. Hiba: pl. node-oknak nyitó záró nem stimmel. Le kell zárni subnodeokat. Komment: <!-- komment szövege --> Szerepe az informatikában XML szabványos! Különböző rendszer különböző rendszerei együtt tudnak működni. pl.: websevice Szolgáltatást lehet publikálni Soap protokollon, ami szabványos XML-en keresztül kommunikál. Server oldalon meghív eljárást adott formátumban egy soap formátumban a saját adatstruktúrájára vissza tudjuk konvertálni. (adat- konv- küld- konvadat) Legtöbb modell: pl. avalonon shell server. Új Office is tudja XMLben menteni szabványosan. Bármely dokumentum leírható. Nodeban lehet node, nodehoz lehet attribútumot rendelni. Ez szöveges, de lehetne binárisan formátumban is. Windows presentation, Vista, XML alapú felület leíró. Bármi leírható XML-ben. További leírás található még az XLM-ről pl.itt: http://ablinux.inf.elte.hu/oradoc9/xmlff.htm

2.oldal Alacsony szintű elérése - XMLDocument (Load, Save) Legyen Személyes/üzleti névjegykártya. Érjük el.netből. UTF-8 ra menteni! Csúnya akármit rak a file elejére. <?xml version="1.0" encoding="utf-8"?> <Cards> <Personal> <Card id="kpocza" name="krisztián Pócza" birthyear="1981" phone="11111" /> <Card id="scsf" name="csaba Seres" birthyear="1982" phone="22222" /> <Card id="xyz" name="xyz" birthyear="1981" phone="44444" /> </Personal> <Business> <Card id="bz" name="zoltán Boncz" birthyear="1982" phone="33333" /> </Business> </Cards> Próbáljuk elérni ezt az XML-t! XMLExample. using System.XML; private static void ShowSingleCard(XmlNode xmlnode) Console.WriteLine("NodeName: 0", xmlnode.name); Console.WriteLine(" Id: 0", xmlnode.attributes["id"].value); Console.WriteLine(" Name: 0", xmlnode.attributes["name"].value); Console.WriteLine(" BirthDate: 0", xmlnode.attributes["birthyear"].value); Másik példa könyv nyilvántartás: sing System; using System.Collections.Generic; using System.Text; using System.Xml; namespace LowLevelXml class Program static void Main(string[] args) XmlDocument books = new XmlDocument(); books.load(@"c:\dotnet\7\konyvek.xml"); Console.WriteLine("de: 0", books.documentelement.name); Console.WriteLine("number of books: 0", books.documentelement.childnodes.count); Console.WriteLine("elso gyerek: 0", books.documentelement.childnodes[0].name); Console.WriteLine("elso gyerek cime: 0", books.documentelement.firstchild.attributes["title"].value); Console.WriteLine("elso gy. inner xml: 0", books.documentelement.firstchild.innerxml); Console.WriteLine("elso gy. outer xml: 0", books.documentelement.firstchild.outerxml);

3.oldal foreach (XmlNode node in books.documentelement.selectnodes("/books/book[@pubyear='2003']")) Console.WriteLine(node.Attributes["title"].Value); foreach (XmlNode node in books.documentelement.selectnodes("//book[@pubyear='2003']")) Console.WriteLine(node.Attributes["title"].Value); XmlElement newbook = books.createelement("book"); newbook.setattribute("title", "asdfasdfg"); XmlAttribute attr = books.createattribute("pubyear"); attr.value = "1234"; newbook.attributes.append(attr); newbook.setattribute("author", "asdfasdf"); books.documentelement.appendchild(newbook); books.save(@"c:\dotnet\7\konyvek2.xml"); Loadnál filenevet adhatunk meg, melyik XML filet akarjuk. Menteni a save metódussal lehet. Adatokat elérni: - SelectNodes és XPath Egy vagy több nod-ot lehet vele kiszelektálni: xmldoc.selectnodes... egy nodelistet ad vissza. Paramétere egy un. Xpath kifejezés lehet. XPath kifejezésekben használható dolgok: (.,.., /, *, @attr, csúcsnév, [felt], // <- tetszőleges szinttel lejjebb ) [felt or felt] [felt and felt] [not(felt)] Xpath_kif Xpath_kif A feltételben tesztelni lehet attribútum értékét vagy létezését -> [@att="..."], [@att] csomópont tartalmát -> [text()="..."] gyermek csomópont tartalmát vagy létezését -> [Csnev="..."], [Csnev] Részletesebb segítség az XPath kifejezésekhez: http://www.zvon.org/xxl/xpathtutorial/general/examples.html Programozási nyelvek fájtáji: - GPL - General Purpose Language(pl: C) - DSL - Domain Specific Language (ilyen XPath) Attribútum elérése "név alapján". Kisbetűre érzékeny. Két per jel egymás után: A//B! Ami A alatt van mindent kiír, ami B típusú. Attribútum elé @ kell!

4.oldal Pl.Adjunk hozzá egy elemet! 1 node nem tartozhat 2 vagy több XML-hez. xmlvmi.createelementhez tarozik Csak! Adjunk attribútumokat is hozzá! xmlelement! Elég hosszú és könnyen elszúrható. private static void LowLevelXml() XmlDocument xmldoc = new XmlDocument(); xmldoc.load(@"c:\dotnet\7\card.xml"); Console.WriteLine("-----------------Personal cards:"); XmlNodeList xmlnodelist = xmldoc.selectnodes("/cards/personal/card"); foreach (XmlNode xmlnode in xmlnodelist) ShowSingleCard(xmlNode); Console.WriteLine("-----------------Every card:"); XmlNodeList xmlnodelist2 = xmldoc.selectnodes("/cards//card"); foreach (XmlNode xmlnode in xmlnodelist2) ShowSingleCard(xmlNode); Console.WriteLine("-----------------1982:"); XmlNodeList xmlnodelist3 = xmldoc.selectnodes("/cards//card[@birthyear=\"1982\"]"); foreach (XmlNode xmlnode in xmlnodelist3) ShowSingleCard(xmlNode); XmlNode businessnode = xmldoc.selectsinglenode("/cards/business"); XmlElement xmlelem = xmldoc.createelement("card"); XmlAttribute idattr = xmldoc.createattribute("id"); idattr.value = "tkt"; xmlelem.attributes.append(idattr); XmlAttribute nameattr = xmldoc.createattribute("name"); nameattr.value = "Katalin Tóth"; xmlelem.attributes.append(nameattr); XmlAttribute birthyearattr = xmldoc.createattribute("birthyear"); birthyearattr.value = "1980"; xmlelem.attributes.append(birthyearattr); XmlAttribute phoneattr = xmldoc.createattribute("phone");

5.oldal phoneattr.value = "555555"; xmlelem.attributes.append(phoneattr); businessnode.appendchild(xmlelem); xmldoc.save(@"c:\dotnet\7\card2.xml"); Element, attribútum runtime létrehozása Szerializáció A fenti módszer alacsony szintű elérést biztosít XML documentumokhoz. Most megnézzük egy magasabb szintű elérést. Osztályok és objektumok XML Documentumba való kiírására is van lehetőség. Osztály serializálása és deserializálása (Serializable attribútum) Mit jelent? Sorosítás. Sorosítás során a memóriában tárolt objektumok és a köztük fennáló hivatkozások által kialakított gráfot egy szekvenciális adatfolyamba helyezzük el. (Deserializásió ennek visszafordítása). Ennek egy speciális eseten amikor XML formátumba kerülnek az adatok a adatfolyamba, ami tipikusan egy fájl. Így az objektumainkat könnyedén kiírhatjuk XML dokumentumba. Osztályt sorosítása: SerExClass [Seriaziable] Csak publikusat lehet (vagy property-n keresztül). Kell default constructor. Sorosít:Geom obj. go= new... usingolni ahova kitoljuk a cuccot Stream writer (szokás mert disposeolható objectum. ) XmlSeria.. (típus, Hogy attribútumba és nem nodeba legyen: Elé írjuk: [XmlAttr] Visszatölteni: using StreamReader Deserialize... [Serializable] public class Coordinate public Coordinate()

6.oldal public Coordinate(int x, int y) this.x = x; this.y = y; [XmlAttribute] public int x; [XmlAttribute] public int y; [Serializable] public class GeomObj public string name; public Coordinate[] edges; private static void SerializeEx() GeomObj go = new GeomObj(); go.name = "line"; go.edges = new Coordinate[2]; go.edges[0] = new Coordinate(1, 1); go.edges[1] = new Coordinate(2, 3); XmlSerializer ser = new XmlSerializer(typeof(GeomObj)); Using(StreamWriter sw =new StreamWriter("c:\\dotnet\\7\\ser.xml")) ser.serialize(sw, go); using (StreamReader sr = new StreamReader("c:\\dotnet\\7\\ser.xml")) GeomObj go2 = (GeomObj)ser.Deserialize(sr); XML séma definíció

7.oldal Az XML Schema egy újabb keletű XML séma nyelv, amit a W3Ca DTD utódaként definiáltak. Ez egy szabványos leíró nyelv. XML kinézetét le tudjuk írni. Erre a sémára illeszkedik e az XML. A nyelvet szokták XSD-nek (XML Schema Definition) is hívni. A könyveket nyilvántartását leíró XML documentum sémája a következő: <xs:schema id="bookschema" targetnamespace="edu://elte.net/bookschema.xsd" elementformdefault="qualified" xmlns="edu://elte.net/bookschema.xsd" xmlns:mstns="edu://elte.net/bookschema.xsd" xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:complextype name="book"> <xs:sequence /> <xs:attribute name="title" type="xs:string" /> <xs:attribute name="pubyear" type="xs:integer" /> <xs:attribute name="author" type="xs:string" /> </xs:complextype> <xs:complextype name="booksroot"> <xs:sequence> <xs:element name="books" type="book" minoccurs="1" maxoccurs="1000" /> </xs:sequence> </xs:complextype> <xs:element name="booksr" type="booksroot"> </xs:element> </xs:schema> Lehet.Netes osztályt készíteni és le lehet generálni ezeket az osztályokat egy ingyenes tool segítségével, amely a.net Framework része. Project menü/ Add new item / XML Schema. (Létező XSD megnyitható fájl menüből) (Rendes fejlesztő szívesen használ toolokat, csak akkor ír kódot, ha muszáj!) Ezzel könnyedén tudunk XML sémákat szerkeszteni. Mindenképp kell egy gyökér elem(ez most.booksroot). Ez tartalmazza a könyv típusú elemeket. Ennek a könyvtípusnak a leírásában pedig attriútumok vannak definiálva minden egyes könyvhöz. Ennek megfelelően tudunk létehozni element, complextype objektumokat és összekapcsolava őket meghatározhatjuk a kívánt szerkezetet.

8.oldal xsd.exe használata where xsd.exe -> hol van path> xsd /c XsdGeomObj.xsd Automatikusan generálja a kódot! Ugyanúgy serializál, deserializás Xsd \c \n Megadható namespace ami hasznos lehet. targetnamespace="edu://elte.net/bookschema.xsd"

9.oldal app.config Konfiguráció kezelés. Van alkalmazásom és kell application konfig file. New item / App.ConfigFile Lefordítom és van: XmlExample.exe config <?xml version="1.0" encoding="utf-8"?> <configuration> </configuration> - appsettings Legegyszerűbb! <add key.. value..> using System.Configuration Configuration settings.appsettings Bele lehetne indexelni, de mi kulcs szerint akarjuk elérni. És innentől állítható lesz. Bonyolultabb konfigurációra példa a média lejátszós példa - saját section. pl. MediaPlayer Olyan szimuláció, ami csak példa saját konfigurációs bejegyzések ír/olvas-ra és a Osztályt betölt/futtat-ra. Code acces security csak onnan olvashat ahonnan zenét játszik mást nem piszkálhat. config section type.netben= neve és assembly plugin- nem tudom miket játszik majd le. Kell: IConfSesson IF-ből kell származni. Beolvassuk Hash táblába, ebből lesz plug_in options és a kulcs a "name" mező. 1. x.xml lejátsza (számol) 2. x.xml2 nem játsza le 3. exception, mert butaságot akar csinálni. LoadPlugin Nem példányosítottam direktbe! Ez magától tudja. ht-be visszaadja.(mikor Lekérem a konfigurációt) Példány típusból nem sikerül, akkor azt a plug int nem tudom használni. Azok érdekelnek, akik IDecoderBase-t impl. pl: Frame lekérdezés. Ezeket a szolgáltatásokat nyújtják. Példányt létre hoz, vmio.utvonalon van, és lejátsza. Absztrakt/ Relatív elérési út. Aktuális /megadott könyvtár. Milyen dekóder tartozik hozzá? ext- hez rendelhető e? Akkor abból olvashatok, ahol lejátssza a filet. get_vmi = Property get-je RunableDecoder- ne kelljen alacsony szintű művelet a másik kódba.

10.oldal.NET és az XML... 1 XML alapok... 1 Alacsony szintű elérése... 2 Szerializáció... 5 app.config... 9