XML和關係資料—-從XSD架構建立資料集映射

來源:互聯網
上載者:User
如何從 XSD 架構建立資料集映射

此樣本闡釋如何從提供的 XML 結構定義語言 (XSD) 架構建立資料集映射。通常情況下,架構是中繼資料,或是關於資料的資料,但 XSD 架構還包括資料類型之間的關係。從一個架構中,可以建立表和列的關係結構以儲存符合所提供的架構的資料。這就是架構的資料集關係映射。

 

VB DataSetMapXSDSchema.aspx

[運行樣本] | [查看原始碼]

DataSet 類與 XmlDataDocument 類有緊密的從屬關係。DataSet 類提供通過 XmlDataDocument 載入的 XML 資料的關係視圖。要產生這兩種視圖間的關係映射,需要使用資料集的 ReadXmlSchema 方法。當您建立 XmlDataDocument 時可使用此方法,如下面的 XmlDataDocument.DataSet.ReadXmlSchema 調用所示。現在,對資料集所做的任何更改都將反映在 XmlDataDocument 中,反之亦然。

為了闡釋這種關係,下列範例程式碼讀取 books.xsd 架構檔案並將它載入到 XmlDataDocument 的 DataSet 屬性中。請注意 ReadXmlSchema 方法是如何使用載入到 StreamReader 中的架構並產生關係映射的。如果在 XmlDataDocument 中已定義了一個關係視圖,則該樣本將引發異常。


StreamReader myStreamReader = null;            try            {            Console.WriteLine("Reading Schema file ...");            myStreamReader = new StreamReader(schema);            myXmlDataDocument.DataSet.ReadXmlSchema(myStreamReader);            }            catch (Exception e)            {            Console.WriteLine ("Exception: {0}", e.ToString());            }            finally            {            if (myStreamReader != null)            myStreamReader.Close();            }            
Dim myStreamReader as StreamReader = nothing            try            myStreamReader = new StreamReader(schema)            Console.WriteLine("Reading Schema file ...")            myXmlDataDocument.ReadXmlSchema(myStreamReader)            catch e as exception            Console.WriteLine ("Exception: " & e.ToString())            finally            If Not myStreamReader Is Nothing            myStreamReader.Close()            end if            end try            
C# VB  

那麼如何知道從架構產生的內部表是什麼樣子的呢?資料集有一個 Tables 屬性,它是內部表的集合。每個表都有一個列 (Columns) 集合,並且每列都有一個列名稱 (ColumnName) 和一個資料類型 (DataType)。只需重複這些集合并設定輸出的格式,即可顯示從提供的架構產生的內部表結構,如下列代碼所示。

// Displays the DataSet tables structure            private void DisplayTableStructure()            {            Console.WriteLine("\r\nTable structure \r\n");            Console.WriteLine("Tables count=" + myXmlDataDocument.DataSet.Tables.Count.ToString());            for (int i = 0; i < myXmlDataDocument.DataSet.Tables.Count; i++)            {            Console.WriteLine("\tTableName='" + myXmlDataDocument.DataSet.Tables[i].TableName + "'.");            Console.WriteLine("\tColumns count=" + myXmlDataDocument.DataSet.Tables[i].Columns.Count.ToString());            for (int j = 0; j < myXmlDataDocument.DataSet.Tables[i].Columns.Count; j++)            {            Console.WriteLine("\t\tColumnName='" +            myXmlDataDocument.DataSet.Tables[i].Columns[j].ColumnName + "', type = "            + myXmlDataDocument.DataSet.Tables[i].Columns[j].DataType.ToString());            }            }            }            
' Displays the DataSet tables structure            private sub DisplayTableStructure()            Console.WriteLine()            Console.WriteLine("Table structure")            Console.WriteLine()            Console.WriteLine("Tables count=" & myXmlDataDocument.Tables.Count.ToString())            Dim i,j as integer            for i = 0 to (myXmlDataDocument.Tables.Count - 1)            Console.WriteLine("TableName='" & myXmlDataDocument.Tables(i).TableName & "'.")            Console.WriteLine("Columns count=" & myXmlDataDocument.Tables(i).Columns.Count.ToString())            for j = 0 to (myXmlDataDocument.Tables(i).Columns.Count - 1)            Console.WriteLine(Strings.chr(9) & "ColumnName='" & _            myXmlDataDocument.Tables(i).Columns(j).ColumnName & _"', type = " & _            myXmlDataDocument.Tables(i).Columns(j).DataType.ToString())            next            Console.WriteLine()            next            end sub            
C# VB  

下列輸出顯示由 books.xsd 架構的 DisplayTableStructure 方法所顯示的表名、列名和列類型。

Table structureTables count=3TableName='bookstore'.Columns count=1ColumnName='bookstore_Id', type = System.Int32TableName='book'.Columns count=5ColumnName='title', type = System.StringColumnName='price', type = System.DecimalColumnName='genre', type = System.StringColumnName='book_Id', type = System.Int32ColumnName='bookstore_Id', type = System.Int32TableName='author'.Columns count=3ColumnName='first-name', type = System.StringColumnName='last-name', type = System.StringColumnName='book_Id', type = System.Int32
摘要
  1. 通常情況下,架構是中繼資料,或是關於資料的資料,但 XSD 架構還包括資料類型之間的關係。
  2. 從 XSD 架構中,可以建立表和列的關係結構以儲存符合所提供的架構的資料。這就是資料集映射。
  3. 資料集的 ReadXmlSchema 方法從所提供的架構產生內部映射。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.