包含vb.netxml用处的词条
使用vb.net如何读取XML文件
使用DataSet类来完成这项任务。
成都创新互联公司主营北川羌族网站建设的网络公司,主营网站建设方案,app软件定制开发,北川羌族h5微信小程序搭建,北川羌族网站营销推广欢迎北川羌族等地区企业咨询
DataSet对象在传输时,是以XML流的形式而不是以COM形式传输的。DataSet对象可以读取XML数据文件或者数据流,从而将树型结构的XML数据转换成关系型的数据,如表(DataTable)、列(DataColumn)、行(DataRow)等。
在这个实例中,我们将XML文件命名为“xmlfile.xml”,具体内容如下:
?xml version=\"1.0\"standalone=”yes”?
Detail
Person
NameManish/Name
Age22/Age
/Person
/Detail \'用VB.NET读写XML文件
C1aSS WriteXML
Shared Sub main()
Dim obj DataSet As New System.Data.DataSet()
Dim strVirtualPath As String=”t.xml”
\'载入XML文件DataSet
objDataSet.ReadXml(”xmlfile.xml”)
\'通过控制器读取XML内容
Console.Write(objDataSet.GetXml)
\'从原XML文件中得到数据
ConSOle.Write(”Enter Name:”)
Dim fname,age As String
fname=ConS01e.ReadLine
\'写入你希望的代码
ConS01e.Write(”Enter Age:”)
age=Console.ReadLine
ConS0le.Write(fname&age)
Dim v(1)As String
v(0)=fname
V(1)=age
\'增加数据DataSet
objDataSet.Tables(0).Rows.Add(V)
\'更新XML文件
objDataSet.WriteXml(”xmlfile.xml”)
Console.Write(obj DataSet.GetXml)
End Sub
End C1ass
运行该程序有两种方式,一种是在Microso~VS.NET框架中编译完后运行;另一种则是在仿DOS的Command窗口中运行。在第一种方式中,必须加上System、System.Data、System.xML的引用。具体方法为:先创建一个空的项目,然后加入这个文件名字;在“解决方案资源管理器”中加入引用,此时需要选择相应的.dll文件;注意,xmlfile.xml文件应该放在工程的/bin目录下面。我们可以输出结果也可以用浏览器直接查看改变后的XML文件。在第二种方式中,选择桌面的“程序”一“Microso~Visual Studio.NET”一“VisualStudio.NET工具”一“Visual Studio.NET命令提示”命令,在DOS命令提示框敲入命令:[Page]
vbc/r:system.d11/r:system.data.d11/r:system.xml.d11 xml.vb其中,程序名为xml.vb,这里的3个.dll文件都是必须调用的库文件。应该在存放VB.NET文件的目录中运行上述命令,否则找不到相应的程序,当然设置PATH也可以做到。此外,Xml_vb文件应该和XML文件放在同一目录下面。每次运行此程序都会往文件中写进同样的内容,都是写入Person/,运行一次写一行。其实,我们只要稍微修改一下这个程序,就可以往XML中写入我们所需要的数据。
哪位对VB操作XML文件熟悉?
利用VB操作XML数据[出处不详]
VB
作者 czqhh @ 2006-10-12 11:19:12
什么是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对象了。
DOMDocument 类
文档对象模型(DOM)使用了一系列相应的对象描述了XML文档的等级状态,DOMDocument类是一个描绘XML文档的DOM结构的MSXML类。
DOMDocument类仅仅提供了很少的几个有用的属性和方法。Load方法载入一个xml文件,loadxml方法将字符串作为xml数据添加到对象中。例如,下面的代码就将一个小的xml文件添加到名为xml_document的文档中。
Dim xml_document As New DOMDocument
xml_document.loadXML _
"<Person>" vbCrLf _
" <FirstName>Rod</FirstName>" vbCrLf _
" <LastName>Stephens</LastName>" vbCrLf _
"</Person>"
DOMDocument的xml属性返回文档的xml描述,可以显示这些返回值看看这些文档究竟是什么样子,也可以将它存储为一个文件,但这完全不必要,因为DOMDocument对象的save方法已经自动将他们存储了。
DOMDocument对象的documentElement属性表示文档数据的根结点,通常情况下操作XML文档都从这里开始。
DOMDocument提供了几种创建新节点的方法。CreateElement方法为文档创建一个新的元素节点,其他创建节点的方法有createAttribute, createProcessingInstruction, 和 createTextNode,在这里就不一一介绍了。
IXMLDOMNode类
IXMLDOMNode类描述了一个节点,该类提供了一系列用于搜索和操纵XML文档的属性和方法。
selectSingleNode 方法用于搜索指定节点的后代,用于搜索指定节点路径的语言称为XPATH,XPATH非常棘手,本文就不详细说明其规范了。下面我们将介绍两个对搜索子节点有特别有用并且简单的方法。
在给selectsingleNode方法中输入子节点的名字,该方法将在节点的子节点进行精确匹配搜索。如果在输入的字符串前面加上".//",那么将搜索节点的全部后代。
' Search for a child node named "LastName."
Set last_name_node = address_node.selectSingleNode("LastName")
' Search for any descendant named "LastName."
Set last_name_node = address_node.selectSingleNode(".//LastName")
下面列出了IXMLDOMNode对象的部分非常有用的属性:
attributes.节点属性集合
nodeName.节点的标记名
nodeTypeString.节点的类型
ownerDocument.返回DOMDocument对象包含的节点
text.表示节点包含的文本内容。如果该节点包含其他节点,那么text代表了所有节点的文本内容的组合。
xml.给出了节点的xml内容,例如:"<FirstName>Rod</FirstName>".
ChildNodes集合包含了节点的子节点。要给节点增加一个子节点,首先必须给使用DOMDocument对象的节点创建方法,然后将这个新建的节点加入到父节点的childNodes集合中。下面的代码展示了创建一个新的子节点的子程序,并使用父节点的appendChild方法将其加入到父节点中:
' Add a new node to the indicated parent node.
Private Sub CreateNode(ByVal indent As Integer, _
ByVal parent As IXMLDOMNode, ByVal node_name As String, _
ByVal node_value As String)
Dim new_node As IXMLDOMNode
' Create the new node.
Set new_node = parent.ownerDocument.createElement(node_name)
' Set the node's text value.
new_node.Text = node_value
' Add the node to the parent.
parent.appendChild new_node
End Sub
SaveValues 程序
现在我们可以使用XML创建一个简单的程序(如图1),其值存储到XML文件中,在程序开始运行时,程序从VALUE.XML文件中加载数据,在程序运行结束时,将程序中的现行值存入VALUE.XML文件中。
下面的代码是显示了VALUE.XML文件的结构:
<Values>
<FirstName>Rod</FirstName>
<LastName>Stephens</LastName>
<Street>1234 Programmer Place</Street>
<City>Bugsville</City>
<State>CO</State>
<Zip>80276</Zip>
</Values>
List1显示了怎样编写SaveValues,当载入表单时,form_load事件触发LoadValues子程序。
LoadValues创建了一个名为xml_document的DOMDocument对象,然后载入xml文件,使用selectSingleNode方法查找名为values的节点,然后使用GetNodeValue方法获得从value节点后代中得到的值。
GetNodeValue使用value节点的selectSingleNode方法寻找目标节点,如果节点不存在函数将返回一个缺省值,如果找到这个节点GetNodeValue将返回该节点的text值。对于value.xml文件中的数据节点,text仅仅是包含在节点中的文本内容。
当窗体卸载时触发form_unload事件,unload事件调用SaveValues子程序。程序创建一个新的DOMDocument对象,该对象创建一个新的名为value的节点,然后用文档的appendChild方法将节点添加到文档中。
在创建所有新的节点后,SaveValues调用DOMDocument's save方法存储新的xml文件。
注意这个新的文件已经覆盖了旧文件,使用DOMDocument对象无法部分改变XML文件,可以加载XML文件,然后修改其中一部分,然后保存文件,但原文件将被完全覆盖。这是一个小的缺陷,但在这时可以使用其它程序进行修改。
List1的最后一部分是CreateNode子程序,CreateNode 为父节点创建一个新节点并同时给这个节点赋值。在这个子程序中首先引用一个DOMDocument对象,然后使用该对象的createElement方法创建一个新的节点。
createNode方法设置节点的text属性,然后将节点作为子节点添加到父节点中。
List1:
Option Explicit
Private m_AppPath As String
Private Sub Form_Load()
' Get the application's startup path.
m_AppPath = App.Path
If Right$(m_AppPath, 1) <> "\" Then m_AppPath = m_AppPath "\"
' Load the values.
LoadValues
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Save the current values.
SaveValues
End Sub
' Load saved values from XML.
Private Sub LoadValues()
Dim xml_document As DOMDocument
Dim values_node As IXMLDOMNode
' Load the document.
Set xml_document = New DOMDocument
xml_document.Load m_AppPath "Values.xml"
' If the file doesn't exist, then
' xml_document.documentElement is Nothing.
If xml_document.documentElement Is Nothing Then
' The file doesn't exist. Do nothing.
Exit Sub
End If
' Find the Values section.
Set values_node = xml_document.selectSingleNode("Values")
' Read the saved values.
txtFirstName.Text = GetNodeValue(values_node, "FirstName", "???")
txtLastName.Text = GetNodeValue(values_node, "LastName", "???")
txtStreet.Text = GetNodeValue(values_node, "Street", "???")
txtCity.Text = GetNodeValue(values_node, "City", "???")
txtState.Text = GetNodeValue(values_node, "State", "???")
txtZip.Text = GetNodeValue(values_node, "Zip", "???")
End Sub
' Return the node's value.
Private Function GetNodeValue(ByVal start_at_node As IXMLDOMNode, _
ByVal node_name As String, _
Optional ByVal default_value As String = "") As String
Dim value_node As IXMLDOMNode
Set value_node = start_at_node.selectSingleNode(".//" node_name)
If value_node Is Nothing Then
GetNodeValue = default_value
Else
GetNodeValue = value_node.Text
End If
End Function
' Save the current values.
Private Sub SaveValues()
Dim xml_document As DOMDocument
Dim values_node As IXMLDOMNode
' Create the XML document.
Set xml_document = New DOMDocument
' Create the Values section node.
Set values_node = xml_document.createElement("Values")
' Add the Values section node to the document.
xml_document.appendChild values_node
' Create nodes for the values inside the
' Values section node.
CreateNode values_node, "FirstName", txtFirstName.Text
CreateNode values_node, "LastName", txtLastName.Text
CreateNode values_node, "Street", txtStreet.Text
CreateNode values_node, "City", txtCity.Text
CreateNode values_node, "State", txtState.Text
CreateNode values_node, "Zip", txtZip.Text
' Save the XML document.
xml_document.save m_AppPath "Values.xml"
End Sub
' Add a new node to the indicated parent node.
Private Sub CreateNode(ByVal parent As IXMLDOMNode, _
ByVal node_name As String, ByVal node_value As String)
Dim new_node As IXMLDOMNode
' Create the new node.
Set new_node = parent.ownerDocument.createElement(node_name)
' Set the node's text value.
new_node.Text = node_value
' Add the node to the parent.
parent.appendChild new_node
End Sub
SaveValuesIndented 程序
虽然每个人都化了很大的精力去处理xml文档,使他们看上更容易些,但xml工具一般都忽略了那些使xml文档结构明显的空白和缩进,xml解析器也同样忽略缩进和空白。
不幸的是我们例子也同样忽略了这些缩进和空白,SaveValues创建了一个象下面那样的xml文件,所有的代码都在同一行中。
<Values><FirstName>Rod</FirstName><LastName>Stephens</LastNa
me><Street>1234 Programmer Place</Street><City>Bugsville</Ci
ty><State>CO</State><Zip>80276</Zip></Values>
VB.NET中包括了文本写入类,可以XML文档规定格式。但MSXML重没有这种功能,所以如果需要以一种清晰的格式保存XML文件,只能另行添加它的格式。
List2列出了程序SaveValuesIndented使用的代码,SaveValues子程序与上面例子中讲的几乎完全相同,但他在创建value节点后同时给XML文档创建了一个<value>标记的新行。
然后SaveValues 调用CreateNode创建一个新的数据节点,但在这里它传递给CreateNode一个新的参数,这个参数表示这个新节点的缩进方式。
CreateNode
' Save the current values.
Private Sub SaveValues()
Dim xml_document As DOMDocument
Dim values_node As IXMLDOMNode
' Create the XML document.
Set xml_document = New DOMDocument
' Create the Values section node.
Set values_node = xml_document.createElement("Values")
' Add a new line.
values_node.appendChild xml_document.createTextNode(vbCrLf)
' Add the Values section node to the document.
xml_document.appendChild values_node
' Create nodes for the values inside the
' Values section node.
CreateNode 4, values_node, "FirstName", txtFirstName.Text
CreateNode 4, values_node, "LastName", txtLastName.Text
CreateNode 4, values_node, "Street", txtStreet.Text
CreateNode 4, values_node, "City", txtCity.Text
CreateNode 4, values_node, "State", txtState.Text
CreateNode 4, values_node, "Zip", txtZip.Text
' Save the XML document.
xml_document.save m_AppPath "Values.xml"
End Sub
' Add a new node to the indicated parent node.
Private Sub CreateNode(ByVal indent As Integer, _
ByVal parent As IXMLDOMNode, ByVal node_name As String, _
ByVal node_value As String)
Dim new_node As IXMLDOMNode
' Indent.
parent.appendChild parent.ownerDocument.createTextNode(Space$(indent))
' Create the new node.
Set new_node = parent.ownerDocument.createElement(node_name)
' Set the node's text value.
new_node.Text = node_value
' Add the node to the parent.
parent.appendChild new_node
' Add a new line.
parent.appendChild parent.ownerDocument.createTextNode(vbCrLf)
End Sub
结论
本文仅仅揭示XML编程的表面,本文的例子中的涉及只是非常简单的XML文件,但你可以使用使用本文揭示的技术做更多的事情,比如配置设置、表单位置、以及其他信息。XML已经向前更进一步的发展了,有了更复杂的数据层次。对于更复杂的数据结构,在运行时可以更容易的使用MSXML对象来存取XML文件
有没有人能详细的说明vb.net 的特点,优缺点及应用领域?最好也举个运用VB.NET的例子啊!
Visual Basic .NET Visual Basic.NET是基于微软.NET Framework之上的面向对象的中间解释性语言,可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。但由于改动太大,导致VB.net对VB的向后兼容性不好,在业界引起不小的争议。 大多的VB.Net程序员使用Visual Studio .Net作为IDE(integrated development environment). SharpDevelop是另一种可用的开源的IDE。VB.Net需要在.Net Framework平台上才能执行。 VB.NET的主页 1 目前版本 2005年9月以来,存在三种不同版本的Visual Basic .NET. 1 Visual Basic .NET:是随vc#和ASP.NET一起在2002年发布的最初始的VB.net版本。C#被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET(有时被称为VB7)影响面不广,这导致VB社区之外很少人关注它。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言,而且还有不少弱点,比如它比VB6来有一个大了十倍的进行时(RunTime),内存footprint也大大增加。 2 Visual Basic .NET 2003:是和.NET Framework 1.1一起发布的。新功能包括对.NET Compact Framework的支持和更好的VB升迁向导。并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时RunTime稳定性。另外,VB.NET 2003还有一个学院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分发给各国某些学者免费使用的版本。 3 Visual Basic 2005:VB2005是VB.Net的重大转变,微软决意在其软件名称中去掉了.NET部份。在VB2005中,微软增加了许多新功能,以引用VB对于初学者来说的一些优点: A, Edit and Continue - 也许是从VB那里丢掉的最大的功能,允许代码的编辑和执行立即的执行恢复。 B, Design-time expression evaluation C, My伪命名空间,提供了访问.NET Framework特定域的不需大量编码的简单方式;还能动态产生类(显然的是My.Forms);提供了改进的VB到VB.NET转换向导;Using 语法,简化了需要部署pattern to free resources的对象的使用;My编码,可隐藏由VB.NET IDE写的模板代码;数据源绑定,简化了数据库C/S开发 上述功能(尤其是My)增强了VB.Net成为快速开发应用平台的可能,并与C#进一步区别开来。参见: 使用My开发 通过My命名空间访问.NET Framework 和项目 Visual Basic 2005 通过增加新功能而填补了和其它所谓更强大的.NET语言的差距。 A, 增加了.NET 2.0语言功能包括:generics和Partial类(在一个文件里定义一个类的某部份然后再添加更多的定义,这个方法在整合用户编码和系统自动生成编码时尤其有用)。 B, XML注释,可以被NDoc等工具处理而自动生成文档 C, operator overloading D, 支持在其它语言中已经广泛使用的unsigned integer数据类型。 E, 支持在许多C衍生编程语言已提供的复合操作符如:"+=", "-=" 4, IsNot专利:If Not X Is Y表达式被转换成If X IsNot Y。当微软为IsNot申请专利时招致了恶名(尤其来自Real公司)。 5, Visual Basic 2005 Express:作为VS产品线上的一部份,VB2005 Express是专为业余爱好者和新手定制的免费的VS Express系列的一员。Express版本目的定位在帮助人们学习一种语言,所以他们有和标准版一致的用户界面,只是少了一些高级功能。另外,VS 查看更多答案
记得采纳啊
vb.net xml 和treeview
你的xml文字有错误,正确的如下: ?xml version="1.0"? grouplist group name="1" server name="1.1"/ server name="2.2"/ /group group name="2" server name="2.1"/ server name="2.2"/ /group /grouplist 以下是在vs2008下调试成功 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim tvw As TreeView Dim x As New Xml.XmlDocument Dim nd As Xml.XmlNode Dim pcnd As TreeNode Dim I As Integer Dim II As Integer tvw = New TreeView tvw.Parent = Me tvw.SetBounds(10, 10, 300, 300) x.Load("该处为xml文件路径") '如 C:\\abc.xml For I = 1 To x.DocumentElement.ChildNodes.Count nd = x.DocumentElement.ChildNodes(I - 1) pcnd = tvw.Nodes.Add("G" I.ToString, nd.Attributes(0).Value) For II = 1 To nd.ChildNodes.Count pcnd.Nodes.Add(nd.ChildNodes(II - 1).Attributes(0).Value) Next pcnd.Expand() Next End Sub End Class
希望采纳
名称栏目:包含vb.netxml用处的词条
网页网址:http://myzitong.com/article/hspjpp.html