XML和关系数据----用XML加载数据集
如何在数据集中加载 XML
此示例阐释如何使用 XML 数据加载数据集 (DataSet)。该示例是根据主题如何从 XSD 架构创建数据集映射建立的,方法是首先将 XML 数据加载到 XmlDataDocument 中,然后从数据集访问这些数据。为了创建内部映射,该数据集已加载了一个架构。下面的示例显示 XML 数据和创建关系对象之间的转换,以访问该 XML 数据。
[运行示例] | [查看源代码] |
如下列代码所示,此示例首先实现 ParseSchema 函数以将 XML 架构定义 (XSD) 语言架构 books.xsd 加载到 XmlDataDocument 的 DataSet 属性中。然后,此示例使用 XmlDataDocument 的 Load 方法加载 XML 文件 books.xml。
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();
}
}
|
||
| 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();
}
}
|
||
| 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 数据
浙公网安备 33010602011771号