2007-01-29

使用.NET存储XML数据

来源: 本站收集整理 作者:佚名 评论 0 条
 

  列表1: 建立关系数据缓存的C#代码

using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Xml;

public class XMLMap
{
public static void Main()
{

// 建立数据集和读取大纲
DataSet orderDS = new DataSet("CustOrder");
orderDS.ReadXmlSchema("CustOrderLitem.xsd");

// 打印数据集的形式
printDSShape(orderDS);

// 把一个XML格式的订单读入数据集
orderDS.ReadXml("Order.xml",System.Data.XmlReadMode.IgnoreSchema);

// 打印数据集中的数据
printDSData(orderDS);

// 此处插入业务规则和数据库更新逻辑
}

private static void printDSShape(DataSet ds)
{
foreach (DataTable dt in ds.Tables)
{
Console.WriteLine("{0}",dt.TableName);

// 打印列的名称和类型
foreach (DataColumn dc in dt.Columns)
Console.WriteLine("\t{0}\t{1}",dc.ColumnName,dc.DataType.ToString());
}
}

private static void printDSData(DataSet ds)
{
foreach (DataTable dt in ds.Tables)
{
Console.WriteLine("\n{0}:", dt.TableName);

// 打印列的头
foreach (DataColumn dc in dt.Columns)
Console.Write("{0}\t",dc.ColumnName);
Console.WriteLine("");

// 输出数据
foreach (DataRow dr in dt.Rows)
{
foreach(DataColumn dc in dt.Columns)
System.Console.Write("{0}\t",dr[dc]);
System.Console.WriteLine("");
}
}
}
}

  仔细查看一下列的名称。尽管大纲中没有指定Customer_Id和Order_Id列,但是它们还是出现在数据表中。ReadXmlSchema给数据集自动添加这些列。数据集把这些列用作外部键(foreign key),以模拟Customer元素与它的Order元素之间、Order元素与它的LineItem元素之间的关系。因为典型情况下XML使用嵌套的关系代替了外部键,所以数据集自动生成自己的主键、数据表之间的外部键,并把它们存储在这些列中。

  请同时仔细查看图3中的数据类型--数据集已经把来自XML大纲数据类型的数据类型映射为对应的.net数据类型。当你把XML文档载入数据集的时候,该数据集把来自XML的每一个值转换为对应的.NET类型。

  图3:生成的数据类型和记录

Customer
CustomerID System.String
Customer_Id System.Int32

Order
OrderID System.Int64
Order_Id System.Int32
Customer_Id System.Int32

LineItem
ProductID System.Int32
Quantity System.Int32
UnitPrice System.Decimal
Order_Id System.Int32

Customer:
CustomerID Customer_Id
ALFKI 0

Order:
OrderID Order_Id Customer_Id
10966 0 0

LineItem:
ProductID Quantity UnitPrice Order_Id
37 8 26.5 0
56 12 38 0

  把大纲载入数据集之后,为了完成关系映射,你需要做的所有事情就是把XML数据载入该数据集。列表1的ReadXml方法打开叫作Order.xml的文件,该文件如图2所示。接着,它把文件中的数据读取到你刚才读取大纲建立的数据集中的数据表里。你的XML订单现在可以通过数据集访问了。
共4页: 上一页 [1] [2] 3 [4] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:PHP5 中的三大特色功能  
下一篇:一刻钟精通正则表达式
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号