通过DataSet从文件中读取Xml文档
来源:互联网 发布:foxtable 连接数据库 编辑:程序博客网 时间:2024/06/11 14:46
1,通过DataSet从文件中读取Xml文档
DataSet是ADO.net结构的主要组件,用以表示内存中的数据库。DataSet对象由DataTable对象的集合组成,因此可以使用 DataRelation对象将这些对象互相关联。每一个DataTable对象可以视为一个表,可以拥有多个DataRowCollection对象和DataColumnCollection对象。无论是DataRowCollection对象或DataColumnCollection对象,都可以拥有多个DataRow对象或DataColumn对象,每一个DataRow对象代表一个数据列(可用一条记录来表示),每一个DataColumn对象代表一个数据列(可用一个字段来表示)。可以看出,DataSet中数据的存放形式是直观的表格形式。
DataSet的功能是十分强大的,在Asp.net中主要用来存储数据库的查询结果;但是也能很方便的操纵xml文档
DataSet读写xml文档的示例如下:
Dim dataset As DataSet = New DataSet()
Dim fs As FileStream
fs = New FileStream(Server.MapPath("sample.xml"), FileMode.Open, FileAccess.Read)
dataset.ReadXml(fs)
fs.Close()
2,DataGrid与DataSet中表的数据绑定
用DataSet读取数据后,可以用DataGrid与之绑定显示。对于xml来说,如果xml中存在层次关系,则 DataSet根据层次的缩进程度将同一层的结点放在同一个表中。同时将不同层次结点之间的隶属关系 存放在relation域中。对于如下一个xml文档
<?xml version="1.0" encoding="utf-8" ?>
<Features>
<Feature fno="1">
<Atrribute ano="1">Address </attribute>
<Atrribute ano="2">Cost </attribute>;
</Feature>
<Feature fno="2">
<Atrribute ano="1">Address </attribute>
</Feature>
</Features>
DataSet是这样存储的:Table(0)中存放Feature层的信息,包括fno等属性,只有一行;
Table(1)中包括Attribute的信息包括ano等属性,有两行。如果Attribute下还有其他子层,就依次放在 Table(2)..中。 DataSet读取数据之后,可以与DataGrid绑定进行显示,绑定时可以针对DataSet中的单个表,也可以一次绑定所有表。绑定的示例如下:
Dim datagrid As DataGrid = New DataGrid()
datagrid.DataSource = dataset.Table(0).DefaultView '绑定单个表
datagrid.DataSource = dataset '绑定全部表,默认显示只有最先一张表
datagrid.DataBind()
这样dataset中的内容就可以在DataGrid中显示了,如果发现绑定无错而没有显示,可以检查一下是否给datagrid分配了内存,New多New少都不行。
3,DataSet中层次关系的实现
DataSet在读取数据的同时,还根据xml文档中的层次关系对生成的表进行了关联。
在上例中,Feature与Attribute的对象之间的父/子关系存放在DataSet.Relations中,关系名为“Feature-Attribute”(自动生成) 该关系的parentTable指向Table(0),而childTable指向Table(1),这样就可以很方便的根据关系打印父子表格。
点击这里查看Msdn上的根据Relations读取子表的例子
然而这样的读取是整个表的读取,对于上例的xml格式,子表则将三个attribute都显示出来了。如果我们只想查询父表中某一行的子属性(如只查询fno为1的Feature的子属性),可以通过如下方法:
先从父表中获取该行对象,然后根据Relation中的关系查询行对象的所有子行。
获取父子表关系:
Dim relation As DataRelation
For Each relation In data.Relations
If relation.ParentTable.TableName = "Feature" Then
'得到该relation
End If
Next
然后获得子行:
Dim childrows() As DataRow
childrows = data.Tables(0).Rows(1).GetChildRows(relation)
- 通过DataSet从文件中读取Xml文档
- 从DataSet中写入读取XML
- DataSet 读取xml文件
- DataSet 读取 Xml 文件
- C#从Excel文件中读取数据转换为DataSet
- C#读取xml文档数据到DataSet
- 通过DataSet读取XML的效率问题
- 通过DataSet读取XML的效率问题
- 通过DataSet读取XML的效率问题
- 通过DataSet读取XML的效率问题
- 通过DataSet读取XML的效率问题
- 通过DataSet读取XML的效率问题
- DataSet与XML互转,DataSet读取XML文件
- 从SQL Server中读取XML文件
- 从XML文件中读取数据
- 如果从Resources中读取xml文件
- 如何:从文件中读取 XML
- 从xml文件中读取出数据
- myeclipse spket 问题求解
- HASH注入式攻击
- Android NDK开发技巧一
- 关于Android开发过程中,createImage的一些总结。
- arm-linux-gcc 4.1.1 编译 QT 4.7 for ARM 中的错误
- 通过DataSet从文件中读取Xml文档
- Android JNI开发入门篇
- 爱情
- 有感
- Android JNI开发提高篇
- 大学生走入社会必听的四个故事
- Android JNI开发进阶篇
- 什么是嵌入式系统
- PHPCMS分页出错的解决办法