您的位置:
軟件 >
開發(fā)者網絡 >
微軟開發(fā)專欄 >
Visual Studio.net專欄 >
VB.net > 正文
VB和VB.NET中的XML操作
概述:這篇文章為計劃將他們的應用程序更新到Visual Basic.NET的微軟Visual Basic 開發(fā)用戶提供一些關于XML的建議。主要包括Visual Basic 6和Visual Basic.NET對XML操作的不同之處,以及Visual Basic.NET關于這方面新增工具的應用。 概述:這篇文章為計劃將他們的應用程序更新到Visual Basic.NET的微軟Visual Basic 開發(fā)用戶提供一些關于XML的建議。主要包括Visual Basic 6和Visual Basic.NET對XML操作的不同之處,以及Visual Basic.NET關于這方面新增工具的應用。
擴展標記語言XML是一種簡單的數(shù)據存儲語言,使用一系列簡單的標記描述數(shù)據,而這些標記可以用方便的方式建立。XML的簡單使其易于在任何應用程序中讀寫數(shù)據,這使XML很快成為數(shù)據交換的唯一公共語言,可以說,“沒有XML,就沒有編程的未來”。
XML主要應用在以下幾個方面:
1. 設計標記語言,如CML,MathML, WML等。
2. 數(shù)據交換和數(shù)據整合,這是XML最激動人心的應用。
3. 媒體無關的數(shù)據發(fā)布
4. 智能代理和本地計算
5. 精確搜索
6. 文件保值
XML的語法非常的簡單,XML文檔由節(jié)點組成,使用打開和關閉節(jié)點描述標記,在格式上與HTML標記非常相似,它們之間最大的不同是:XML中可以自由定義標記名。比如下面的標記就描述了一個主頁地址:
<web>http://hongwanfu.126.com</web>
注意,XML不用聲明標記名就可以使用,而且,開始和結束標記必須相同,XML是識別大小寫的,所以標記的大小寫也必須相同。
節(jié)點標記中可以包含屬性,比如:
<web type=”Homepage”>http://hongwanfu.126.com</web>
代碼中Web節(jié)點包含屬性Type,其值為Homepage.
如果不愿意在節(jié)點中包含一個值,那么可以不需要結束標記,可以用在開始標記的后面加一個斜線來結束節(jié)點,在下面的例子中,Web標記的屬性就存儲了一個電話號碼,所以就不需要一個結束標記:
<web type=”Homepage” url=”http://hongwanfu.126.com” />
以上只是對XML文檔的簡單描述,如何使用文檔中包含的信息,XML標準體系中有其他的配套標準。
在Visual Basic 6.0中操縱XML文件
2002-10-17· ·crystal編譯··yesky
什么是XML
擴展標記語言XML是一種簡單的數(shù)據存儲語言,使用一系列簡單的標記描述數(shù)據,而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據要占用更多的空間,但XML極其簡單易于掌握和使用。
XML與Access,Oracle和SQL Server等數(shù)據庫不同,數(shù)據庫提供了更強有力的數(shù)據存儲和分析能力,例如:數(shù)據索引、排序、查找、相關一致性等,XML僅僅是展示數(shù)據。事實上XML與其他數(shù)據表現(xiàn)形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優(yōu)點,但正是這點使XML與眾不同。
XML的簡單使其易于在任何應用程序中讀寫數(shù)據,這使XML很快成為數(shù)據交換的唯一公共語言,雖然不同的應用軟件也支持其它的數(shù)據交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS, Linux以及其他平臺下產生的信息結合,然后可以很容易加載XML數(shù)據到程序中并分析他,并以XML格式輸出結果。
XML的優(yōu)點
我們談到XML長于在不同的應用程序之間交換數(shù)據,XML文件也便于構建小的數(shù)據庫,不久以前,軟件都使用INI文件存儲配置信息、用戶參數(shù)以及其他信息,后來微軟引入了系統(tǒng)注冊表,接作微軟告訴我們不應該再使用INI文件了,從那時起Visual Basic對INI文件的支持被削弱了。但不幸的是注冊表有幾個致命的缺點:不是簡單的文本文件,難于讀寫、可能會變得龐大和緩慢、如果注冊表不知何故出現(xiàn)問題,將有可能造成系統(tǒng)死機。
將配置信息放在XML文件中可以避免這些問題,甚至可以將XML文件設置為一個共享文件,這樣在不同的計算機上的用戶就可以共享數(shù)據,這是注冊表所不能比擬的。
在被稱為下一代ASP的ASP.NET中可以在WEB頁中直接使用XML,你可以使用數(shù)據綁定控件直接綁定數(shù)據并自動顯示。
當然也可以不選擇XML,使用文本文件、注冊表、數(shù)據庫都可以完成XML所能完成的任務,XML只是你在數(shù)據存儲和恢復的另一種工具而已。
XML語法簡介
XML的語法非常的簡單,XML文檔由節(jié)點組成,使用打開和關閉節(jié)點描述標記,在格式上與HTML標記非常相似,它們之間最大的不同是:XML中可以自由定義標記名。比如下面的標記就描述了一個電話號碼:
<Phone>987-654-3210</Phone>
而且不用聲明標記名就可以使用。
開始和結束標記必須相同,XML是識別大小寫的,所以標記的大小寫也必須相同。比如上面的例子中以<Phone>標記開始就必須以</Phone>標記結束,而不能是</phone>或</PHONE>
節(jié)點標記中可以包含屬性,比如下面的代碼中Phone節(jié)點包含屬性Type,其值為WorkFax:
<Phone Type="WorkFax">987-654-3210<Phone>
如果不愿意在節(jié)點中包含一個值,那么可以不需要結束標記,可以用在開始標記的后面加一個斜線來結束節(jié)點,在下面的例子中,Phone標記的Number屬性就存儲了一個電話號碼,所以就不需要一個結束標記:
<Phone Type="WorkFax" Number="987-654-3210" />
XML文檔的結構是一個樹形等級結構。文檔必須有一個唯一的根結點,根節(jié)點包含所有其它節(jié)點。下面我們舉一個較為完整的例子:
<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>
注意相似的節(jié)點不需要包含相同的信息,例如第一個Entry節(jié)點包含了地址信息和家庭電話號碼,第二個Entry節(jié)點包含了Work和WorkFax電話號碼,而沒有包含第一個Entry節(jié)點包含的信息。
XML工具
如前面的例子顯示,XML語法是如此的簡單以至于你可以在很短的時間作一個XML解析器,幸運的是你不必這樣做,因為XML工具可以運行在各種平臺上,包括可以安裝了Visual Basic的Windows。
正是這些L工具而不是XML本身使XML變得更強大和復雜。不同的解析器使你可以某一時刻加載整個XML文檔或只加載某個節(jié)點,與此相反,XML Writer 可以同時創(chuàng)建一個XML文檔和節(jié)點。
DOM解析器使我們能夠很方便的加載、復制、排序、修改和存儲XML文件,遍歷節(jié)點獲得名稱或屬性,并給結果排序。雖然他們的功能沒有真正的關系數(shù)據庫強大,但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,一切完成后就現(xiàn)在就可以在VB應用程序中添加XML對象了。
與Visual Basic .NET一起使用.NET Framework
2002-08-29· · ··Microsoft
使用.NET Framework,Microsoft Visual Basic開發(fā)人員可以創(chuàng)建健壯的、在先前的Visual Basic版本中很難編寫的應用程序。本文將討論使用.NET Framework的好處,并且將包括一些功能強大的、Visual Basic開發(fā)人員可以與該框架一起使用的特性,包括多線程和線程池(thread pooling)、Windows服務和文件系統(tǒng)監(jiān)控等。
為什么使用框架
單詞框架(framework)有幾種含意。在這種情況中,它指的是創(chuàng)建和運行應用程序的基礎。擁有這樣的基礎使得創(chuàng)建應用程序變得更容易,而同時使用了一個一致的、簡化的程序設計模型。
作為一個Visual Basic 6.0開發(fā)人員,你對于這種程序設計語言感覺很滿意,它使得創(chuàng)建各種應用程序變得很容易。Visual Basic語言本身提供了固有的數(shù)據類型,如 Integer, Long和String,以及一些最常用的函數(shù),如字符串處理和數(shù)據類型轉換等。當你的應用程序變得更復雜時,你可以使用Win32 API來完成標準的Visual Basic函數(shù)所不能實現(xiàn)的功能-如獲取任意的注冊鍵和數(shù)值。在許多情況中,你還可以使用COM(Component Object Model,組件對象模型)組件庫來擴展應用程序的功能;最明顯的例子是ADO(ActiveX Data Objects)庫,你的應用程序可以使用它來進行數(shù)據訪問。
雖然Visual Basic足夠靈活,可以提供這些不同的可擴展性機制,但這種靈活性仍然需要你學習幾種復雜的API體系結構。你需要了解Win32如何工作,以及如何在Visual Basic中調用它們,這可能會是一個既費時又容易出錯的任務。你還需要了解如何在Visual Basic中使用各種COM組件,每個COM組件都有一個不同的對象模型。
最后,當你使用Win32 API、ADO,也可能使用許多其他COM組件,創(chuàng)建自己的Visual Basic應用程序時,你需要管理這些應用程序的部署以及它們的相關性。一個典型的Visual Basic應用程序的相關性列表所包括的遠遠多于Visual Basic運行時(runtime);它必須包括應用程序使用的所有對象庫,如ADO 2.6。
公共框架背后的想法是解決這些問題,并使得用戶創(chuàng)建健壯的應用程序變得更容易,而無需學習多種不同的API體系結構,并且無需部署和處理多種對象庫的版本問題。
什么是.NET Framework
術語.NET Framework指的是構成Microsoft .NET平臺開發(fā)基礎的一組技術。這一組中的關鍵技術是運行時(runtime)和類庫,如圖1所示。
圖 1. .NET Framework由.NET運行時和類庫組成
運行時負責管理代碼,在執(zhí)行時向它提供服務,這與Visual Basic 6.0運行時的作用類似。.NET程序設計語言-包括Visual Basic .NET、Microsoft Visual C#、C++管理的擴展,以及多種來自不同開發(fā)商的程序設計語言-通過一組公共的統(tǒng)一類來利用各種服務和特性。
.NET統(tǒng)一類提供了創(chuàng)建應用程序的基礎,而不管你使用何種語言。無論你只是簡單地連接一個字符串,還是創(chuàng)建一個Windows服務或多層的基于網絡的應用程序,你都要用到這些統(tǒng)一類。
統(tǒng)一類為訪問平臺的功能性提供了一種一致的方法。一旦你學會了使用類庫,你就會發(fā)現(xiàn)所有任務都遵循同一個一致的體系結構。要編寫自己的應用程序,你無需學習和掌握不同的API體系結構。
由于.NET Framework,部署Visual Basic .NET應用程序變得更容易了。與Visual Basic 6.0應用程序不同,你無需配置各種相關性,如單獨的數(shù)據訪問庫、XML語法分析器和網絡API,因為所有這些功能都是.NET Framework的組成部分。
通過在統(tǒng)一的、集成的框架上創(chuàng)建自己的應用程序,你可以實現(xiàn)學習這種框架所花費時間的最大回報,并且你將擁有更多容易部署和使用的健壯的應用程序。
Visual Basic.NET快速開發(fā)MIS系統(tǒng)
2002-11-29· ·黎宇 ··yesky
【摘 要】 本文介紹微軟最新技術Visual Basic.NET在數(shù)據庫開發(fā)方面的應用。結合數(shù)據庫系統(tǒng)開發(fā)的知識,介紹了物理表操作的方法,利用Visual Basic.NET的面向對象的特征,利用類的繼承知識,簡化了數(shù)據庫系統(tǒng)開發(fā)過程。
引言
以前版本的Visual Basic雖然號稱自己是一種OOP(面向對象)編程語言,但卻不是一個地地道道的OOP編程語言,最多只是半個面向對象的編程語言。但Visual Basic.NET已經是一種完全的面向對象的編程語言。他支持面向對象的所有基本特征:繼承、多態(tài)和重載。這使得以前在Visual Basic中很難或根本實現(xiàn)不了的問題,在Visual Basic.NET中可以順利的用簡單的方法實現(xiàn)。
自定義數(shù)據操作類
定義一個數(shù)據訪問的基類,并編寫有關數(shù)據庫操作的必要方法。
定義一個數(shù)據訪問類,類名為CData。定義連接Oracle數(shù)據庫的方法ConnOracle,獲取數(shù)據集的方法GetDataSet, 獲取物理表的方法GetDataTable, 向物理表中插入一行數(shù)據的方法Insert, 向物理表中刪除數(shù)據的方法Delete, 向物理表中更新數(shù)據的方法Update。其實現(xiàn)方法不是本文的重點,在此僅給出代碼,不作詳細分析。代碼如下:
Public Class CDataBase
Dim OleCnnDB As New OleDbConnection()
‘連接Oracle數(shù)據庫,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
‘獲取數(shù)據集。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
‘向物理表中插入一行數(shù)據。TableName:表名,Value:行數(shù)據,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
‘更新