Visual Basic.NET的出现大大改变了这个状况,Visual Basic.NET提供了使用XML、XSL以及其他XML工具的完整工具,使用户很轻松就能实现XML的应用,甚至,在不用编写代码的情况下操作XML。
ADO.NET是Microsoft新推出的.NET框架中用于数据访问的组件,其最大的优点就是使用XML作为传送数据的标准,只要有一个XML文本,就可以读入ADO.NET的组件中,然后ADO.NET再以XML格式传给数据库或者其他组件。
可以使用DataSet对象的ReadXML方法将一个XML文件读入到DataSet中,这是一个重载的方法,有几种语法格式,经常用到的如下所示:
其中,FileName为XML文档的名字,现在将前面创建的XML文本“Personal.xml”读入到DataSet中。新建一个项目,在窗体上创建一个Button和一个DataGrid控件,双击Button1输入以下代码:
Dim ds As New DataSet()
'读入XML文档 ds.ReadXml("personal.xml") Dim tb As DataTable Dim dv As DataView tb = ds.Tables(0) dv = New DataView(tb) Me.DataGrid1.DataSource = dv |
显示结果如图:
怎么样?和刚才比起来,代码量是不是少了很多,很容易就实现了XML文件的读取呢?
.NET框架提供了操作XML文档和数据的一组完整的类。XmlReader和XmlWriter对象以及这两个对象的派生类提供了读取XML和可选验证XML的能力。XmlDocument和XMLSchema对象及其相关类代表了XML本身,而XslTransform和XMPathNavigator类分别支持XSL转换(XSLT)和应XML路径语言(XPath)查询。
除了提供操作XML数据的外,XML标准还是.NET框 架中数据转换和序列化的基础。多数时候这些后台进行,不过我们已经看到ADO.NET类型化数据集是使用XML架构表示的。
另外,ADO.NET数据集类对读写XML数据和架构提供直接支持,而且XmlDataDocument提供同步XML数据和关系ADO.NET数据集的能力,这样就可以用XML和关系工具对数据的单个集合进行操作。
.NET框架公开了一个可用来直接对XML数据进行操作的类集。不过,如果需要使用关系操作(如排序、过滤或检索相关行),数据集则提供了一个更简便的机制。此外,XML类不支持数据绑定,所以如果要向用户显示数据,就必须使用数据集的XML方法。
幸运的是,将任何一个给定的数据集合作为XML层次结构或关系数据集相互并不排斥。
1.数据集支持的最直接的XML方法可能就是GetXml和GetXmlSchema了,这方法只将XML数据或XSD架构作为一个字符串值返回。可以用以下代码来实现:
Dim xmlstr As String xmlStr = Me.dsMasterl.GetXmlSchema() Me.tbResult.Text = xmlStr |
和
Dim xmlstr As String xmlStr = Me.dsMasterl.GetXml Me.tbResult.Text = xmlStr |
2. 数据集的ReadXmlSchema方法可从XSD架构定义或从XML加载数据集架构定义。
ReadXmlSchema支持4个版本的方法。可以将流、识别文件名的字符串、TextReader或XmlReader对象传递给方法。
ReadXmlSchema不加载任何数据,它只加载表、列和约束(键和关系)。如果数据集已经架构信息,新表、列和约束将在必要时添加到现有架构中。如果正读取的架构中定义的对象与现有数据集架构冲突,那么ReadXmlSchema方法将会引发一个异常。
Dim newDS As New System.Data.DataSet() newDS.ReadXmlSchema("masterSchema.xsd") Me.daCategories.Fill(newDS.Tables("Categories")) Me.daproducts.Fill(newDS.Tables("Products")) SetBindings(newDS) |