2. XML feldolgozása típusos DataSet segítégével
Kétféle módon is létrehozhatunk típusos Datasetet.
Az XSD.exe segítségével, parancssorból. Ez egy XSD alapján legenerálja nekünk a típusos datasetet, VB, CS, vagy amilyen nyelven csak szeretnénk.
Így kell meghívni:
[parancssor ablak]
XSD.exe /d /o:[hova tegye] /l:[milyen nyelven] [az xsd fájl elérési útja]
(Még egyebeket is beállíthatunk rajta, a lehetőségeket előhívhatjuk az XSD.exe /? paranccsal, nekem ennyi elég volt, de lehet cifrázni, egészen sok dolgot tud)
Hiba nélkül lefutott, a [hova tegye] elérési úton meg is jelent a fájl, ami ebben az esetben egy .vb kiterjesztésű osztály volt. Ezután az elkészített fájlt beletettem a projektbe.
A típusos dataset objektum máris létrehozható lett, rögtön létre is hoztam belőle egy példányt.
Dim ds As New [sajáttípus]
Dim r As System.Xml.XmlReader = System.Xml.XmlReader.Create([path])
ds.ReadXml(r)
DataGridView1.DataSource = ds.Tables(0)
Fordítás, futtatás.
Ezzel megkapjuk a dataset objektumot, feltöltve a beolvasott xml fájlból képzett táblákkal.
A menet innen ugyanaz, mint az előző cikkben már leírtam, a relációk "megemésztetése" a nézetekkel mégiscsak "kézimunka".
Ennek létezik egy "felhasználóbarátabb" megoldása is:
A project explorerben beletesszük a projectbe az XSD fájlt, és erre a VS automatikusan létrehozza a típusos datasetet. Sőt, ha ezt az XSD fájlt megnyitjuk dataset editorban (jobb klikk a fájlon, Open With... - választ - Dataset Editor), akkor fény derül a kapcsolatokra, táblákra, sőt, még szerkeszthetjük is, vagy akár összekattingathatunk bármilyen lekérdezést anélkül, hogy fejből kellene vágnunk az automatikusan létrejött _Id-ket.
A megoldással csak az a gond, hogy cseppet sem hibatűrő, ha valami nem olyan az XSD fájlban, ahogy az a nagy könyvben meg van írva(és gyakran, sőt legtöbbször nem olyan), akkor ennek a kényelmes megoldásnak lőttek, mert a példány létrehozásakor csak hibaüzenet hegyeket fog megjeleníteni adatok helyett. (Holott pontosan ugyanezeket az adatokat egy nem ilyen módon létrehozott Datasetben hibátlanul megjeleníti)
De szerintem mindenképpen megéri az első próbát, azonban ha hibát kapunk, nem érdemes vele tovább foglalkozni. Nekem nem jött be.