[ Pobierz całość w formacie PDF ]
.NET oraz XML.Obiekty klasy XmlDataDocument są zbliżone do obiektów klasy XmlDocument lecz w odróżnieniu od nich wykorzystują relacyjną reprezentację danych, zbliżoną do tej, stosowanej w obiektach DataSet.Obiekty XmlDataDocument można stosować wszędzie tam gdzie są używane obiekty XmlDocument, a co więcej, nawet metody i właściwości obu tych klas są identyczne.Za każdym razem, gdy do obiektu XmlDataDocument ładowane są informacje, środowisko.NET automatycznie tworzy obiekt DataSet, który można pobrać za pośrednictwem właściwości o tej samej nazwie.Kolumny tego obiektu oraz ich typy określane są na podstawie schematu XML.Jeśli żaden schemat nie zostanie podany, to środowisko.NET samodzielnie określi strukturę danych.Dzięki temu można modyfikować dane w dowolny sposób.Na przykład, można otworzyć plik XML przy wykorzystaniu klas XML a następnie przenieść je do obiektu DataSet i powiązać elementami kontrolnymi serwera.Można także pobrać informacje przechowywane w bazie danych przy użyciu obiektu DataSet i zapisać w formacie XML.Modyfikacje wprowadzane w obiektach XmlDataDocument mogą lecz nie muszą powodować zmian w obiektach DataSet.Jeśli nowe dane odpowiadają polom obiektu DataSet, to zostanie do niego dodany nowy wiersz.Wzajemne związki pomiędzy obiektami klas XmlDataDocument oraz DataSet przedstawiłem na rysunku 11.11.Rysunek 11.11.Wzajemny związek pomiędzy obiektami kas DataSet oraz XmlDataDocumentOpis rysunkuXML file - plik XMLValidations… - walidacja, transformacje kodu XML, i tak dalejDatabase - baza danychManaged Providers - Zarządzani dostawcy danych (np.ADO.NET)Data binding… - wiązanie danych, wizualne narzędzia projektowania elementów sterujących, itp.XmlTextReader, XmlDataDocument, DataSet - bez zmianPrzyjrzyjmy się wzajemnym związkom obiektów obu tych klas.W przedstawionym poniżej przykładzie, za pośrednictwem obiektu XmlDataDocument pobierzemy dane z pliku books.xml i zapiszemy je w obiekcie DataSet, a następnie wyświetlimy je na dwa różne sposoby.Przyjrzyjmy się teraz kodowi przykładu, który przedstawiłem na listingu 11.12, w którym został wykorzystany zarówno obiekt DataSet jak i XmlDataDocument (część HTML tej strony składa się jedynie z elementu Label oraz dwóch elementów DataGrid których zawartość jest generowana na serwerze).Listing 11.12.Wyświetlanie danych przy wykorzystaniu obiektów DataSet oraz XmlDataDocumentl<%@ Page Language="VB" %>ll<%@ Import Namespace="System.Xml" %>ll<%@ Import Namespace="System.Data" %>ll<%@ Import Namespace="System.Data.OleDb" %>llll<script runat=server>llprivate i, j as integerllprivate strOutput as string = ""llllsub Page_Load(obj as object, e as eventargs)lldim xmldoc as new XMLDataDocument()lllltryllxmldoc.DataSet.ReadXml(Server.MapPath("books3.xml"))llll'select data view and bind to server controlllDataGrid1.DataSource = xmldoc.DataSetllDataGrid1.DataMember = xmldoc.DataSet.Tables(0)._llTableNamellDataGrid2.DataSource = xmldoc.DataSetllDataGrid2.DataMember = xmldoc.DataSet.Tables(1)._llTableNamellllDataGrid1.DataBind()llDataGrid2.DataBind()llllFor i = 0 To xmldoc.DataSet.Tables.Count - 1llstrOutput += "TableName = """ & _llxmldoc.DataSet.Tables(i).TableName & """<br>"llstrOutput += " " & "Columns count " & _ll"= " & xmldoc.DataSet.Tables(i).Columns.Count
[ Pobierz całość w formacie PDF ]