您的位置:首页 > 其它

XML和关系数据----用XML加载数据集

2006-12-06 19:33 501 查看

如何在数据集中加载 XML

此示例阐释如何使用 XML 数据加载数据集 (DataSet)。该示例是根据主题如何从 XSD 架构创建数据集映射建立的,方法是首先将 XML 数据加载到 XmlDataDocument 中,然后从数据集访问这些数据。为了创建内部映射,该数据集已加载了一个架构。下面的示例显示 XML 数据和创建关系对象之间的转换,以访问该 XML 数据。





VB LoadDataSetXMLData.aspx
[运行示例] | [查看源代码]
如下列代码所示,此示例首先实现 ParseSchema 函数以将 XML 架构定义 (XSD) 语言架构 books.xsd 加载到 XmlDataDocument 的 DataSet 属性中。然后,此示例使用 XmlDataDocument 的 Load 方法加载 XML 文件 books.xml

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
}

private const String document = "books.xml";
private const String myLoadSchema = "books.xsd";
private XmlDataDocument myXmlDataDocument;
public static void Main()
{
String[] args = {document, myLoadSchema};
LoadDataSetXMLDataSample myLoadDataSetXMLDataSample = new LoadDataSetXMLDataSample();
myLoadDataSetXMLDataSample.Run(args);
}
public void Run(String[] args)
{
try
{
Console.WriteLine("Creating an XmlDataDocument ...");
myXmlDataDocument = new XmlDataDocument();
ParseSchema(args[1]);
DisplayTableStructure();
myXmlDataDocument.Load(args[0]);
DisplayTables(myXmlDataDocument.DataSet);
}
catch (Exception e)
{
Console.WriteLine ("Exception: {0}", e.ToString());
}
}
// Loads a specified schema into the DataSet
public void ParseSchema(String schema)
{
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();
}
}

private const document as string = "books.xml"
private const myLoadSchema as string = "books.xsd"
private myXmlDataDocument as XmlDataDocument
shared sub Main()
Dim args As String() = {document, myLoadSchema}
Dim myLoadDataSetXMLDataSample as LoadDataSetXMLDataSample
myLoadDataSetXMLDataSample = new LoadDataSetXMLDataSample()
myLoadDataSetXMLDataSample.Run(args)
end sub
public sub Run(args As String())
try
Console.WriteLine("Creating an XmlDataDocument ...")
myXmlDataDocument = new XmlDataDocument()
ParseSchema(args(1))
DisplayTableStructure()
myXmlDataDocument.Load(args(0))
DisplayTables(myXmlDataDocument.DataSet)
catch e as exception
Console.WriteLine ("Exception: " & e.ToString())
end try
end sub
' Loads a specified schema into the DataSet
public sub ParseSchema(schema as string)
Dim myStreamReader as StreamReader = nothing
try
myStreamReader = new StreamReader(schema)
Console.WriteLine("Reading Schema file ...")
myXmlDataDocument.DataSet.ReadXmlSchema(myStreamReader)
catch e as exception
Console.WriteLine ("Exception: " & e.ToString())
finally
If Not myStreamReader Is nothing
myStreamReader.Close()
end if
end try
end sub

C# VB
如在如何从 XSD 架构创建数据集映射中说明的那样,只需通过在表、列和行的集合上迭代,然后设置输出格式,DisplayTableStructure 方法(使用 books.xsd 架构文件生成)即可使该示例显示内部表结构。此示例使用 DisplayTables 方法扩展了该概念(如下列代码所示),该方法使示例得以显示 XML 文件的内容。此示例使用 For Each 关键字而非 For 循环来说明重复集合的其他机制。

// Displays the contents of the DataSet tables
private void DisplayTables(DataSet dataset)
{
// Navigate Dataset
Console.WriteLine("Content of Tables ...\r\n");
foreach(DataTable table in dataset.Tables)
{
Console.WriteLine("TableName = " + table.TableName);
Console.WriteLine ("{0}", "---------");
Console.WriteLine("Columns ...\r\n");
foreach(DataColumn column in table.Columns)
{
Console.Write("{0,-22}",column.ColumnName);
}
Console.WriteLine();
Console.WriteLine("\r\nNumber of rows = {0}", table.Rows.Count.ToString());
Console.WriteLine("Rows ...\r\n");
foreach(DataRow row in table.Rows)
{
foreach(Object value in row.ItemArray)
{
Console.Write("{0,-22}",value.ToString());
}
Console.WriteLine();
}
Console.WriteLine();
}
}

' Displays the contents of the DataSet tables
private sub DisplayTables(myDataset as DataSet)
' Navigate Dataset
Console.WriteLine()
Console.WriteLine("Content of Tables ...")
Dim table as DataTable
for each table in myDataset.Tables
Console.WriteLine("TableName = " & table.TableName.ToString())
Console.WriteLine ("---------")
Console.WriteLine("Columns ...")
Dim column as DataColumn
for each column in table.Columns
Console.Write("{0,-22}",column.ColumnName.ToString())
next
Console.WriteLine()
Console.WriteLine("Number of rows = {0}", table.Rows.Count.ToString())
Console.WriteLine("Rows ...")
Dim row as DataRow
for each row in table.Rows
Dim value as object
for each value in row.ItemArray
Console.Write("{0,-22}",value.ToString())
Next
Console.WriteLine()
Next
Console.WriteLine()
Next
end sub

C# VB
下列输出显示 books.xml 的表名、列名和行内容,如 DisplayTables 方法显示的那样。

Creating an XmlDataDocument ...
Reading Schema file ...
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
Content of Tables ...
TableName = bookstore
---------
Columns ...
bookstore_Id
Number of rows = 1
Rows ...
0
TableName = book
---------
Columns ...
title                 price                 genre                 book_Id               bookstore_Id
Number of rows = 3
Rows ...
The Autobiography of Benjamin Franklin8.99                  autobiography         0                     0
The Confidence Man    11.99                 novel                 1                     0
The Gorgias           9.99                  philosophy            2                     0
TableName = author
---------
Columns ...
first-name            last-name             book_Id
Number of rows = 3
Rows ...
Benjamin              Franklin              0
Herman                Melville              1
Sidas                 Plato                 2


摘要

可通过 DataSet 属性上的关系方法访问已加载到 XmlDataDocument 中的 XML 数据。
当通过 XmlDataDocument 的 DataSet 属性输入关系数据时,也可以读取 XML 数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: