VB和VB.NET中的XML操作

来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:01:14
您的位置:软件 >开发者网络 >微软开发专栏 >Visual Studio.net专栏 >VB.net > 正文
VB和VB.NET中的XML操作
概述:这篇文章为计划将他们的应用程序更新到Visual Basic.NET的微软Visual Basic 开发用户提供一些关于XML的建议。主要包括Visual Basic 6和Visual Basic.NET对XML操作的不同之处,以及Visual Basic.NET关于这方面新增工具的应用。 概述:这篇文章为计划将他们的应用程序更新到Visual Basic.NET的微软Visual Basic 开发用户提供一些关于XML的建议。主要包括Visual Basic 6和Visual Basic.NET对XML操作的不同之处,以及Visual Basic.NET关于这方面新增工具的应用。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,可以说,“没有XML,就没有编程的未来”。
XML主要应用在以下几个方面:
1. 设计标记语言,如CML,MathML, WML等。
2. 数据交换和数据整合,这是XML最激动人心的应用。
3. 媒体无关的数据发布
4. 智能代理和本地计算
5. 精确搜索
6. 文件保值
XML的语法非常的简单,XML文档由节点组成,使用打开和关闭节点描述标记,在格式上与HTML标记非常相似,它们之间最大的不同是:XML中可以自由定义标记名。比如下面的标记就描述了一个主页地址:
<web>http://hongwanfu.126.com</web>
注意,XML不用声明标记名就可以使用,而且,开始和结束标记必须相同,XML是识别大小写的,所以标记的大小写也必须相同。
节点标记中可以包含属性,比如:
<web type=”Homepage”>http://hongwanfu.126.com</web>
代码中Web节点包含属性Type,其值为Homepage.
如果不愿意在节点中包含一个值,那么可以不需要结束标记,可以用在开始标记的后面加一个斜线来结束节点,在下面的例子中,Web标记的属性就存储了一个电话号码,所以就不需要一个结束标记:
<web type=”Homepage” url=”http://hongwanfu.126.com” />
以上只是对XML文档的简单描述,如何使用文档中包含的信息,XML标准体系中有其他的配套标准。
在Visual Basic 6.0中操纵XML文件
2002-10-17· ·crystal编译··yesky
什么是XML
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
XML的优点
我们谈到XML长于在不同的应用程序之间交换数据,XML文件也便于构建小的数据库,不久以前,软件都使用INI文件存储配置信息、用户参数以及其他信息,后来微软引入了系统注册表,接作微软告诉我们不应该再使用INI文件了,从那时起Visual Basic对INI文件的支持被削弱了。但不幸的是注册表有几个致命的缺点:不是简单的文本文件,难于读写、可能会变得庞大和缓慢、如果注册表不知何故出现问题,将有可能造成系统死机。
将配置信息放在XML文件中可以避免这些问题,甚至可以将XML文件设置为一个共享文件,这样在不同的计算机上的用户就可以共享数据,这是注册表所不能比拟的。
在被称为下一代ASP的ASP.NET中可以在WEB页中直接使用XML,你可以使用数据绑定控件直接绑定数据并自动显示。
当然也可以不选择XML,使用文本文件、注册表、数据库都可以完成XML所能完成的任务,XML只是你在数据存储和恢复的另一种工具而已。
XML语法简介
XML的语法非常的简单,XML文档由节点组成,使用打开和关闭节点描述标记,在格式上与HTML标记非常相似,它们之间最大的不同是:XML中可以自由定义标记名。比如下面的标记就描述了一个电话号码:
<Phone>987-654-3210</Phone>
而且不用声明标记名就可以使用。
开始和结束标记必须相同,XML是识别大小写的,所以标记的大小写也必须相同。比如上面的例子中以<Phone>标记开始就必须以</Phone>标记结束,而不能是</phone>或</PHONE>
节点标记中可以包含属性,比如下面的代码中Phone节点包含属性Type,其值为WorkFax:
<Phone Type="WorkFax">987-654-3210<Phone>
如果不愿意在节点中包含一个值,那么可以不需要结束标记,可以用在开始标记的后面加一个斜线来结束节点,在下面的例子中,Phone标记的Number属性就存储了一个电话号码,所以就不需要一个结束标记:
<Phone Type="WorkFax" Number="987-654-3210" />
XML文档的结构是一个树形等级结构。文档必须有一个唯一的根结点,根节点包含所有其它节点。下面我们举一个较为完整的例子:
<Addresses>
<Entry Type="Personal">
<FirstName>Andy</FirstName>
<LastName>Fickle</LastName>
<Street>1234 Programmer Place</Street>
<City>Bugsville</City>
<State>CO</State>
<Zip>82379</Zip>
<Phone Type="Home">354-493-9489</Phone>
</Entry>
<Entry Type="Work">
<FirstName>Betty</FirstName>
<LastName>Masterson</LastName>
<Phone Type="Work">937-878-4958</Phone>
<Phone Type="WorkFax">937-878-4900</Phone>
</Entry>
...
</Addresses>
注意相似的节点不需要包含相同的信息,例如第一个Entry节点包含了地址信息和家庭电话号码,第二个Entry节点包含了Work和WorkFax电话号码,而没有包含第一个Entry节点包含的信息。
XML工具
如前面的例子显示,XML语法是如此的简单以至于你可以在很短的时间作一个XML解析器,幸运的是你不必这样做,因为XML工具可以运行在各种平台上,包括可以安装了Visual Basic的Windows。
正是这些L工具而不是XML本身使XML变得更强大和复杂。不同的解析器使你可以某一时刻加载整个XML文档或只加载某个节点,与此相反,XML Writer 可以同时创建一个XML文档和节点。
DOM解析器使我们能够很方便的加载、复制、排序、修改和存储XML文件,遍历节点获得名称或属性,并给结果排序。虽然他们的功能没有真正的关系数据库强大,但DOM的这些特点依然非常有用。
XSD可以定义XML文档的格式,XSL扩展样式单定义了怎样将XML文档转换成其他可以在WEB浏览器中浏览的文件格式,比如HTML文件。
这些工具实际上比XML本身更复杂,所以所有讲解XML的书籍都花了很大的篇幅解释这些XML工具。但这超出了本文的范围,有兴趣的读者可以参考有关资料。
Visual Basic.Net提供了使用XML、XSL以及其他XML工具的完整工具。但不用等待VB.NET,微软XML核心服务(MSXML)版本4.0提供了从Visual Basic6.0加载和存储XML文档的工具。
在msdn.microsoft.com/xml/default.asp中下载最新版本的MSXML,并安装在计算机上。在Visual Basic 6.0中使用Microsoft XML V4.0象引用其他对象一样,首先在工程菜单中选择引用菜单项,选择Microsoft V4.0,单击OK,一切完成后就现在就可以在VB应用程序中添加XML对象了。
与Visual Basic .NET一起使用.NET Framework
2002-08-29· · ··Microsoft
使用.NET Framework,Microsoft Visual Basic开发人员可以创建健壮的、在先前的Visual Basic版本中很难编写的应用程序。本文将讨论使用.NET Framework的好处,并且将包括一些功能强大的、Visual Basic开发人员可以与该框架一起使用的特性,包括多线程和线程池(thread pooling)、Windows服务和文件系统监控等。
为什么使用框架
单词框架(framework)有几种含意。在这种情况中,它指的是创建和运行应用程序的基础。拥有这样的基础使得创建应用程序变得更容易,而同时使用了一个一致的、简化的程序设计模型。
作为一个Visual Basic 6.0开发人员,你对于这种程序设计语言感觉很满意,它使得创建各种应用程序变得很容易。Visual Basic语言本身提供了固有的数据类型,如 Integer, Long和String,以及一些最常用的函数,如字符串处理和数据类型转换等。当你的应用程序变得更复杂时,你可以使用Win32 API来完成标准的Visual Basic函数所不能实现的功能-如获取任意的注册键和数值。在许多情况中,你还可以使用COM(Component Object Model,组件对象模型)组件库来扩展应用程序的功能;最明显的例子是ADO(ActiveX Data Objects)库,你的应用程序可以使用它来进行数据访问。
虽然Visual Basic足够灵活,可以提供这些不同的可扩展性机制,但这种灵活性仍然需要你学习几种复杂的API体系结构。你需要了解Win32如何工作,以及如何在Visual Basic中调用它们,这可能会是一个既费时又容易出错的任务。你还需要了解如何在Visual Basic中使用各种COM组件,每个COM组件都有一个不同的对象模型。
最后,当你使用Win32 API、ADO,也可能使用许多其他COM组件,创建自己的Visual Basic应用程序时,你需要管理这些应用程序的部署以及它们的相关性。一个典型的Visual Basic应用程序的相关性列表所包括的远远多于Visual Basic运行时(runtime);它必须包括应用程序使用的所有对象库,如ADO 2.6。
公共框架背后的想法是解决这些问题,并使得用户创建健壮的应用程序变得更容易,而无需学习多种不同的API体系结构,并且无需部署和处理多种对象库的版本问题。
什么是.NET Framework
术语.NET Framework指的是构成Microsoft .NET平台开发基础的一组技术。这一组中的关键技术是运行时(runtime)和类库,如图1所示。
图 1. .NET Framework由.NET运行时和类库组成
运行时负责管理代码,在执行时向它提供服务,这与Visual Basic 6.0运行时的作用类似。.NET程序设计语言-包括Visual Basic .NET、Microsoft Visual C#、C++管理的扩展,以及多种来自不同开发商的程序设计语言-通过一组公共的统一类来利用各种服务和特性。
.NET统一类提供了创建应用程序的基础,而不管你使用何种语言。无论你只是简单地连接一个字符串,还是创建一个Windows服务或多层的基于网络的应用程序,你都要用到这些统一类。
统一类为访问平台的功能性提供了一种一致的方法。一旦你学会了使用类库,你就会发现所有任务都遵循同一个一致的体系结构。要编写自己的应用程序,你无需学习和掌握不同的API体系结构。
由于.NET Framework,部署Visual Basic .NET应用程序变得更容易了。与Visual Basic 6.0应用程序不同,你无需配置各种相关性,如单独的数据访问库、XML语法分析器和网络API,因为所有这些功能都是.NET Framework的组成部分。
通过在统一的、集成的框架上创建自己的应用程序,你可以实现学习这种框架所花费时间的最大回报,并且你将拥有更多容易部署和使用的健壮的应用程序。
Visual Basic.NET快速开发MIS系统
2002-11-29· ·黎宇 ··yesky
【摘 要】 本文介绍微软最新技术Visual Basic.NET在数据库开发方面的应用。结合数据库系统开发的知识,介绍了物理表操作的方法,利用Visual Basic.NET的面向对象的特征,利用类的继承知识,简化了数据库系统开发过程。
引言
以前版本的Visual Basic虽然号称自己是一种OOP(面向对象)编程语言,但却不是一个地地道道的OOP编程语言,最多只是半个面向对象的编程语言。但Visual Basic.NET已经是一种完全的面向对象的编程语言。他支持面向对象的所有基本特征:继承、多态和重载。这使得以前在Visual Basic中很难或根本实现不了的问题,在Visual Basic.NET中可以顺利的用简单的方法实现。
自定义数据操作类
定义一个数据访问的基类,并编写有关数据库操作的必要方法。
定义一个数据访问类,类名为CData。定义连接Oracle数据库的方法ConnOracle,获取数据集的方法GetDataSet, 获取物理表的方法GetDataTable, 向物理表中插入一行数据的方法Insert, 向物理表中删除数据的方法Delete, 向物理表中更新数据的方法Update。其实现方法不是本文的重点,在此仅给出代码,不作详细分析。代码如下:
Public Class CDataBase
Dim OleCnnDB As New OleDbConnection()
‘连接Oracle数据库,ServerName:服务器名,UserId:用户名,UserPwd:用户密码
Public Function ConnOracle(ByVal ServerName As String, ByVal UserId As String, ByVal UserPwd As String) As OleDbConnection
Dim OleCnnDB As New OleDbConnection()
With OleCnnDB
.ConnectionString = "Provider=MSDAORA.1;Password=‘" & UserPwd & "‘;User ID=‘" & UserId & "‘;Data Source=‘" & ServerName & "‘"
Try
.Open()
Catch er As Exception
MsgBox(er.ToString)
End Try
End With
mOleCnnDB = OleCnnDB
Return OleCnnDB
End Function
‘获取数据集。TableName:表名,strWhere:条件
Public Overloads Function GetDataSet(ByVal TableName As String, ByVal strWhere As String) As DataSet
Dim strSql As String
Dim myDataSet As New DataSet()
Dim myOleDataAdapter As New OleDbDataAdapter()
myOleDataAdapter.TableMappings.Add(TableName, TableName)
strSql = "SELECT * FROM " & TableName & " where " & strWhere
myOleDataAdapter.SelectCommand = New OleDbCommand(strSql, mOleCnnDB)
Try
myOleDataAdapter.Fill(myDataSet)
Catch er As Exception
MsgBox(er.ToString)
End Try
Return myDataSet
End Function
‘获取物理表。TableName:表名
Public Overloads Function GetDataTable(ByVal TableName As String) As DataTable
Dim myDataSet As New DataSet()
myDataSet = GetDataSet(TableName)
Return myDataSet.Tables(0)
End Function
‘获取物理表。TableName:表名,strWhere:条件
Public Overloads Function GetDataTable(ByVal TableName As String, ByVal strWhere As String) As DataTable
Dim myDataSet As New DataSet()
myDataSet = GetDataSet(TableName, strWhere)
Return myDataSet.Tables(0)
End Function
‘向物理表中插入一行数据。TableName:表名,Value:行数据,BeginColumnIndex:开始列
Public Overloads Function Insert(ByVal TableName As String, ByVal Value As Object, Optional ByVal BeginColumnIndex As Int16 = 0) As Boolean
Dim myDataAdapter As New OleDbDataAdapter()
Dim strSql As String
Dim myDataSet As New DataSet()
Dim dRow As DataRow
Dim i, len As Int16
strSql = "SELECT * FROM " & TableName
myDataAdapter.SelectCommand = New OleDbCommand(strSql, mOleCnnDB)
Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)
myDataSet.Tables.Add(TableName)
myDataAdapter.Fill(myDataSet, TableName)
dRow = myDataSet.Tables(TableName).NewRow
len = Value.Length
For i = BeginColumnIndex To len - 1
If Not (IsDBNull(Value(i)) Or IsNothing(Value(i))) Then
dRow.Item(i) = Value(i)
End If
Next
myDataSet.Tables(TableName).Rows.Add(dRow)
Try
myDataAdapter.Update(myDataSet, TableName)
Catch er As Exception
MsgBox(er.ToString)
Return False
End Try
myDataSet.Tables.Remove(TableName)
Return True
End Function
‘更新
_xyz