您的位置:首页 > 运维架构 > 网站架构

XML和关系数据----从XSD架构创建数据集映射

2006-12-06 19:31 531 查看

如何从 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 中已定义了一个关系视图,则该示例将引发异常。

function doClick(index, numTabs, id) {
document.all("tab" + id, index).className = "tab";
for (var i=1; i

td.code {
padding:0,10,0,10;
border-style:solid;
border-width:1;
border-bottom:0;
border-top:0;
border-right:0;
border-color:cccccc;
background-color:ffffee
}
td.tab {
text-align:center;
font:8pt verdana;
width:15%;
padding:3,3,3,3;
border-style:solid;
border-width:1;
border-right:0;
border-color:black;
background-color:eeeeee;
cursor:hand
}
td.backtab {
text-align:center;
font: 8pt verdana;
width:15%;
padding:3,3,3,3;
border-style:solid;
border-width:1;
border-right:0;
border-color:black;
background-color:cccccc;
cursor:hand
}
td.space {
width:70%;
font: 8pt verdana;
padding:0,0,0,0;
border-style:solid;
border-bottom:0;
border-right:0;
border-width:1;
border-color:cccccc;
border-left-color:black;
background-color:white
}

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 structure
Tables count=3
TableName='bookstore'.
Columns count=1
ColumnName='bookstore_Id', type = System.Int32
TableName='book'.
Columns count=5
ColumnName='title', type = System.String
ColumnName='price', type = System.Decimal
ColumnName='genre', type = System.String
ColumnName='book_Id', type = System.Int32
ColumnName='bookstore_Id', type = System.Int32
TableName='author'.
Columns count=3
ColumnName='first-name', type = System.String
ColumnName='last-name', type = System.String
ColumnName='book_Id', type = System.Int32


摘要

通常情况下,架构是元数据,或是关于数据的数据,但 XSD 架构还包括数据类型之间的关系。
从 XSD 架构中,可以创建表和列的关系结构以存储符合所提供的架构的数据。这就是数据集映射。
数据集的 ReadXmlSchema 方法从所提供的架构生成内部映射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐