利用VB操作XML数据

合集下载

利用VB操作XML数据

利用VB操作XML数据

利用VB操作XML数据在VB中,有几种方法可以操作XML数据。

下面将介绍一些常用的方法:1. 创建XML文档:可以使用XMLTextWriter类或XDocument类来创建XML文档。

使用XMLTextWriter类:```vbDim writer As New XmlTextWriter("C:\path\to\file.xml", System.Text.Encoding.UTF8)writer.WriteStartDocument(True)writer.Formatting = Formatting.Indentedwriter.Indentation = 2writer.WriteStartElement("RootElement")writer.WriteEndElementwriter.WriteEndDocumentwriter.Close```使用XDocument类:```vbDim doc As XDocument = New XDocumentNew XDeclaration("1.0", "utf-8", "yes"),New XElement("RootElement")doc.Save("C:\path\to\file.xml")```2. 读取XML文档:可以使用XmlDocument类、XmlReader类或XDocument类来读取XML文档。

使用XmlDocument类:```vbDim doc As New XmlDocumentdoc.Load("C:\path\to\file.xml")Dim root As XmlNode = doc.SelectSingleNode("RootElement")```使用XmlReader类:```vbDim reader As XmlReader =XmlReader.Create("C:\path\to\file.xml")While reader.ReadIf reader.NodeType = XmlNodeType.Element AndAlso = "RootElement" Then'处理根元素End IfEnd Whilereader.Close```使用XDocument类:```vbDim doc As XDocument = XDocument.Load("C:\path\to\file.xml") Dim root As XElement = doc.Element("RootElement")```使用XmlDocument类:```vbDim doc As New XmlDocumentdoc.Load("C:\path\to\file.xml")Dim root As XmlNode = doc.SelectSingleNode("RootElement")Dim childElement As XmlElement =doc.CreateElement("ChildElement")Dim attribute As XmlAttribute =doc.CreateAttribute("AttributeName")attribute.Value = "AttributeValue"childElement.Attributes.Append(attribute)root.AppendChild(childElement)doc.Save("C:\path\to\file.xml")```使用XmlReader类:```vbDim reader As XmlReader =XmlReader.Create("C:\path\to\file.xml")While reader.ReadIf reader.NodeType = XmlNodeType.Element AndAlso = "RootElement" ThenDim childElement As XmlWriter =reader.CreateElement("ChildElement")writer.WriteAttributeString("AttributeName", "AttributeValue")writer.WriteEndElementEnd IfEnd Whilereader.Close```使用XDocument类:```vbDim doc As XDocument = XDocument.Load("C:\path\to\file.xml") doc.Root.Add(New XElement("ChildElement", NewXAttribute("AttributeName", "AttributeValue")))doc.Save("C:\path\to\file.xml")```以上是操作XML数据的一些基本方法,可以根据需求进行扩展。

vb.net xml 转义方法

vb.net xml 转义方法

程序员经常需要在其应用程序中处理XML数据。

在处理XML 数据时,转义是一个非常重要的问题。

XML转义是指将XML文件中的特殊字符转换为对应的实体引用,以便在XML文档中正常显示这些特殊字符。

本文将介绍如何在中进行XML转义,同时提供一些常见的转义方法和示例。

一、特殊字符的转义方法在XML中,以下五个字符被定义为特殊字符:、<、>、"和'。

这些特殊字符如果直接出现在XML文档中,将会被解释为XML标记,而不是文本数据。

需要将这些特殊字符转义为对应的实体引用,以便在XML文档中正常显示。

下面是五个特殊字符在XML中的实体引用:1. 转义为 amp;2. < 转义为 lt;3. > 转义为 gt;4. " 转义为 quot;5. ' 转义为 apos;二、在中进行XML转义在中进行XML转义非常简单。

可以使用System.Security.SecurityElement.Escape方法来对字符串进行XML 转义。

该方法可以将字符串中的特殊字符替换为对应的实体引用。

示例代码如下所示:```Dim originalString As String = "This is a lt;testgt; string with quot;specialquot; characters"Dim escapedString As String =System.Security.SecurityElement.Escape(originalString) Console.WriteLine(escapedString)```运行以上代码,会得到如下输出:```textThis is a amp;lt;testamp;gt; string withamp;quot;specialamp;quot; characters```从输出结果可以看出,原始字符串中的特殊字符已经被成功转义为对应的实体引用。

基于VB和XML的个人资料编辑器的实现

基于VB和XML的个人资料编辑器的实现

基于VB和XML的个人资料编辑器的实现在当今信息化时代,我们每个人都需要处理各种各样的个人信息,如姓名、地址、电话号码、电子邮件、社交媒体账号等。

不同的场景,需要我们提供不同的信息,因此,需要一个方便实用的工具来管理这些信息。

本文将介绍一个基于VB和XML的个人资料编辑器。

一、为什么选择VB和XMLVisual Basic(VB)是一种面向对象的编程语言,可用于Windows平台应用程序开发。

VB可以通过可视化开发环境方便快捷地进行开发。

而且,VB的语法易于学习,适合初学者上手。

XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。

它具有结构化、可扩展和易于处理的特点。

将个人信息存储在XML文件中,方便了数据的整理和管理,可以灵活地增加、删除和修改数据记录。

二、需求分析在设计个人资料编辑器之前,需要先分析用户的需求。

通过与用户进行交流,整理出以下功能需求:1. 能够方便地添加、删除和修改个人信息;2. 支持批量导入和导出;3. 支持搜索功能,查找特定的个人信息;4. 支持多种排序方式,如按姓名、电话号码或地址等排序;5. 能够保存用户的数据到XML文件中,方便备份和恢复;6. 界面简洁、美观,方便用户操作。

三、系统设计在满足用户需求的基础上,我们开始设计个人资料编辑器。

界面采用Windows标准界面,主要分为菜单栏、工具栏、信息列表和状态栏四大部分。

1. 菜单栏包括文件、编辑、视图、帮助四个菜单,分别用于打开、保存、导入、导出、添加、删除、修改、排序、搜索、查看帮助等功能。

2. 工具栏包括常用的添加、删除、修改、保存、导入、导出按钮,方便用户快速访问常用功能。

3. 信息列表采用表格形式展示个人信息,每行对应一条记录,列分别是姓名、地址、电话号码、电子邮件、社交媒体账号等。

4. 状态栏用于显示当前操作的状态,如“打开文件”、“保存成功”、“搜索结果为XX条记录”等。

VB.NET与XML的实例操作

VB.NET与XML的实例操作

与XML的实例操作再建⽴项⽬的⽂件夹的bin⽂件夹下 '创建两个⽂件 '⼀个是"myxml.xml" '⼀个是"myxml.mdb" '这⾥⾯有⼀个表"users"三个字段名"nameid","age","faverity" '再转到图形界⾯ '单击"⼯具箱"的"数据"把"OleDbConnection"," OleDbComman","DataSet","OleDbDataAdapter" '拉⼊窗体界⾯ '依次对这⼏个控件进⾏操作 '我的⽂件夹是D:\vbproject\WindowsApplication1 'D:\vbproject\WindowsApplication1/bin/myxml.xml 'D:\vbproject\WindowsApplication1/bin/myxml.mdb //======================准备结束============== (1)⾸先在机⼦上要有.Net FrameWork 打开依次展开:⽂件-新建-项⽬; 再选择VISUAL-BASIC-项⽬-Windows应⽤程序 这就是所需要⼀个⼩界⾯ 现在⼀步步的来写代码,完成它的功能 ⾸先来完成添加功能: 我们⽬标是:通过这三个⽂本框(姓名,年龄,爱好)来添加到数据库中。

然后再把这个数据库的表保存成XML格式 双击"添加"按钮 在⾥⾯写下以下这些代:(VB写的语⾔,不是C#) If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then '在三个⽂本框都不为空时,执⾏以下操作, '否则出错 Dim strsel As String strsel = "select * from users where nameid='" & TextBox1.Text & "'" '建⽴⼀个查询字符串,看要要添加的姓名,是否已在数据中存在,如果不存在就可以添加 OleDbCommand1 = New OleDbCommand mandText = strsel Me.OleDbCommand1.Connection = OleDbConnection1 OleDbConnection1.Open() Try '进⾏异常处理 Dim reader As OleDbDataReader = OleDbCommand1.ExecuteReader() If reader.Read() Then '通过DataReader来读取,如果读得到,表明数据在有这个姓名存在,不添加; ListBox1.Items.Add("已经有该记录!") Else reader.Close() '要对数据库进⾏操作,⾸先把DataReader关掉; Dim insert As String insert = "insert into users(nameid,age,faverity) values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')" '建⽴⼀个插⼊字符串 OleDbCommand1 = New OleDbCommand mandText = insert Me.OleDbCommand1.Connection = Me.OleDbConnection1 Me.OleDbCommand1.ExecuteNonQuery() ListBox1.Items.Add("添加成功!!") '以下是把数据库的数据保存为XML格式 DataSet1 = New DataSet OleDbDataAdapter1 = New OleDbDataAdapter("select * from users", OleDbConnection1) OleDbDataAdapter1.Fill(DataSet1, "users") DataSet1.WriteXml("myxml.xml") End If Catch ex As Exception ListBox1.Items.Add("Errors!") End Try OleDbConnection1.Close() Else MessageBox.Show("请输⼊完整!!") End If //==================接下来是对数据库进⾏查询=================== '双击"查找"按钮 '写⼊以下代码 If TextBox4.Text <> "" Then '还是和上⾯⼀样如果⽂本框为空,就不执⾏,如果不为空,就执⾏下⾯的操作 ListBox1.Items.Clear() '⾸先把listBox清空 Dim searchtext As String searchtext = TextBox4.Text OleDbConnection1.Open() Dim selstring As String selstring = "select * from users where nameid like '%" & searchtext & "%'" ' 建⽴查询字符串,可以⽀持模糊查询 OleDbCommand1 = New OleDbCommand mandText = selstring Me.OleDbCommand1.Connection = OleDbConnection1 '以下⼏句是显⽰匹配的条数 DataSet1 = New DataSet OleDbDataAdapter1 = New OleDbDataAdapter(selstring, OleDbConnection1) OleDbDataAdapter1.Fill(DataSet1, "users") ListBox1.Items.Add("共有" & DataSet1.Tables("users").Rows.Count & "条匹配的记录") ListBox1.Items.Add("-------------------------------------------------------------") Try '进⾏异常处理 Dim cmdreader As OleDbDataReader = OleDbCommand1.ExecuteReader() While cmdreader.Read '注意这⾥要⽤while '不然就⽆法进⾏循环,就只能进⾏⼀次查询 ListBox1.Items.Add(cmdreader("nameid").ToString()) ListBox1.Items.Add(cmdreader("age").ToString()) ListBox1.Items.Add(cmdreader("faverity").ToString()) ListBox1.Items.Add("----------------------------------") End While cmdreader.Close() OleDbConnection1.Close() Catch ex As Exception ListBox1.Items.Add("Errors") End Try Else End If //================再把来XML⽂档,以XML形式显⽰在ListBox⾥⾯ 双击"XML⽂档" 写进下⾯这些代码: ListBox1.Items.Clear() ' 清空listBox Dim xtr As XmlTextReader = New XmlTextReader("myxml.xml") '创建成⼀个XmlTextReader读取"myxml.xml"⽂档 While xtr.Read Select Case (xtr.NodeType) ' 咱们⽤select case 形式来选择xml节点类型 Case XmlNodeType.XmlDeclaration '先从ListBox⾥写进xml声明=====xmldeclaration ListBox1.Items.Add("<?xml version='1.0' encoding='gb2312'?>") '再依次显⽰节点的名称,值 '包括根节点 Case XmlNodeType.Element ListBox1.Items.Add("<" & & ">") Case XmlNodeType.Text ListBox1.Items.Add(xtr.Value) Case XmlNodeType.EndElement ListBox1.Items.Add("</" & & ">") End Select End While xtr.Close() '关闭xmlTextReader //========再把数据库中所有数据显⽰在ListBox中======== '双击"查看全部"按钮 '写⼊下⾯的⼀些代码: ListBox1.Items.Clear() '这些代码⼤家应该可以看得懂了 OleDbConnection1.Open() Dim selall As String selall = "select * from users" OleDbCommand1 = New OleDbCommand mandText = selall Me.OleDbCommand1.Connection = OleDbConnection1 Try Dim creader As OleDbDataReader = OleDbCommand1.ExecuteReader() While creader.Read ListBox1.Items.Add("name: " & creader("nameid").ToString() & "; age :" & creader("age").ToString() & "; faverity :" & creader("faverity").ToString()) End While creader.Close() Catch ex As Exception ListBox1.Items.Add("Errors") End Try OleDbConnection1.Close() //==========================再来进完成删除按钮================= '双击"删除"按钮 '写⼊以下的代码 If TextBox4.Text <> "" Then '如果不为空,进⾏以下操作 ListBox1.Items.Clear() '先清空ListBox OleDbConnection1.Open() ' 建⽴连接 Dim delstring As String delstring = TextBox4.Text Dim delsel As String delsel = "select * from users where nameid='" & delstring & "'" '创建查询字符串 OleDbCommand1 = New OleDbCommand mandText = delsel Me.OleDbCommand1.Connection = OleDbConnection1 Try Dim selreader As OleDbDataReader = OleDbCommand1.ExecuteReader() If Not selreader.Read Then '假如读不到,就表明数据库⽆此数据,⽆法进⾏删除操作 MessageBox.Show("数据库中⽆该记录!") Else selreader.Close() '要对数据进⾏操作,必须⾸把DataReader关掉 Dim delrecord As String delrecord = "delete * from users where nameid='" & delstring & "'" '建⽴删除字符串sql语句,以上都是 OleDbCommand1 = New OleDbCommand mandText = delrecord Me.OleDbCommand1.Connection = OleDbConnection1 Me.OleDbCommand1.ExecuteNonQuery() MessageBox.Show("删除成功!!") '再把进⾏删除操作的数据库,再次把数据库中数据保存成XML⽂档 DataSet1 = New DataSet OleDbDataAdapter1 = New OleDbDataAdapter("select * from users", OleDbConnection1) OleDbDataAdapter1.Fill(DataSet1, "users") DataSet1.WriteXml("myxml.xml") End If Catch ex As Exception MessageBox.Show(ex.Message) Finally OleDbConnection1.Close() End Try Else MessageBox.Show("请输⼊你想删除的记录!") End If //======================= 重设按钮===== TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" ListBox1.Items.Clear() //============================关闭=============== me.Close() '好了这个⼩软件完成了,有问题的话留⾔ '本程序在.net framework 2003创建 '已经进⾏过测试,完全可以运⾏。

vb读取xml文件方法

vb读取xml文件方法

vb读取xml文件方法标题:VB 读取 XML 文件方法嘿,朋友!今天我要跟你唠唠怎么用 VB 读取 XML 文件,这可是个超有用的技能,学会了你就牛啦!首先呢,你得准备好 VB 这个工具,就像战士上战场得有把好枪一样。

第一步,打开你的 VB 编辑器,这就好比打开了一扇通往神奇世界的大门。

然后新建一个项目,给它起个响亮的名字,比如“XML 读取大冒险”。

接下来,在代码窗口中,你得引用一些必要的库。

这就好像给你的程序穿上一套超级装备,让它能在读取 XML 文件的战场上勇往直前。

引用的代码就像这样:```vbImports System.Xml```这一步可别忘了,不然你的程序可能会像没头的苍蝇一样乱撞。

然后呢,咱们得找到要读取的 XML 文件。

就好比你要去一个宝藏之地,得先知道它在哪儿。

假设你的 XML 文件叫“data.xml”,放在了“D:\myfiles”这个文件夹里。

再然后,就是真正读取文件的时刻啦!这一步就像是打开宝箱的关键钥匙。

代码大概像下面这样:```vbDim xmlDoc As New XmlDocumentxmlDoc.Load("D:\myfiles\data.xml")```这时候,VB 就把 XML 文件的内容都装进了“xmlDoc”这个大口袋里。

读取完了文件,接下来就得从这个大口袋里掏出咱们想要的宝贝啦!比如说,你想要获取 XML 文件中的某个节点的值。

这就好比在一个装满各种东西的大箱子里找你心心念念的那个小玩具。

假设你要找的节点叫“<user>”,那获取节点值的代码可以是这样:```vbDim node As XmlNode = xmlDoc.SelectSingleNode("//user")Dim value As String = node.InnerText```看,是不是像变魔术一样,就把节点的值给弄到手啦!我跟你说,我刚开始学这的时候,可闹了不少笑话。

利用VB操作XML数据

利用VB操作XML数据

利用VB操作XML数据什么是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的中可以在WEB页中直接使用XML,你可以使用数据绑定控件直接绑定数据并自动显示。

当然也可以不选择XML,使用文本文件、注册表、数据库都可以完成XML所能完成的任务,XML只是你在数据存储和恢复的另一种工具而已。

VB6.0操作XML文件

VB6.0操作XML文件

VB6.0操作XML文件XML文件如下:<?xml version="1.0" encoding="gb2312"?><testlist><test><id>1</id><name>自由飞翔</name><time>2007-12-7</time></test><test><id>2</id><name>自由</name><time>2007-12-7</time></test></testlist>以下是VB6.0的代码:'工程->引用->Mircosoft XML6.0Dim XMLDoc As DOMDocumentDim root As IXMLDOMNodeDim xlst As IXMLDOMNodeList, xlst1 As IXMLDOMNodeListDim xn As IXMLDOMNodeDim xnf As IXMLDOMNodeDim xe As IXMLDOMElementSet XMLDoc = New DOMDocumentXMLDoc.Load "F:\example\test.xml" 'xml文件路径根据存放路径不同而不同!Set xn = XMLDoc.selectSingleNode("testlist")'以下为读取xml文件内容,这里用ListView控件显示Set xlst = xn.childNodesListView1.ListItems.ClearFor Each xnf In xlstSet xe = xnfSet xlst1 = xe.childNodesWith ListView1.ListItems.Add(, , xlst1.Item(0).Text).SubItems(1) = xlst1.Item(1).Text.SubItems(2) = xlst1.Item(2).TextEnd WithNext'以下是插入一个节点(这里插入一个id=3,name=飞翔,time=date 的节点)Dim XMLId As IXMLDOMElementDim XMLName As IXMLDOMElementDim XMLTime As IXMLDOMElementDim returnValue As IXMLDOMNodeSet xe = XMLDoc.createElement("test") '创建一个<test>节点Set XMLId = XMLDoc.createElement("id")XMLId.Text = 3Set returnValue = xe.appendChild(XMLId)Set XMLName = XMLDoc.createElement("name")XMLName.Text = "飞翔"Set returnValue = xe.appendChild(XMLName)Set XMLTime = XMLDoc.createElement("time")XMLTime.Text = DateSet returnValue = xe.appendChild(XMLTime)Set returnValue = xn.appendChild(xe) '添加到<testlist>节点中XMLDoc.Save "F:\example\test.xml"'删除XML中id=2的节点Set xlst = XMLDoc.SelectSingleNode("testlist").ChildNodes For Each xnf In xlstSet xe = xnfIf xe.childNodes(0).Text = "2" Thenxn.removeChild xeEnd IfNext xnfXMLDoc.Save "F:\example\test.xml"。

VB和VB.NET中的XML操作(5)

VB和VB.NET中的XML操作(5)

VB和中的XML操作(5)3. 数据集的InferXmlSchema方法根据传递给它的XML数据的结构派生出数据集架构。

InferXmlSchema与上一节介绍的ReadXmlSchema方法的输入源相同。

另外,InferXMLSchema方法接受表示命名空间的字符串数组,这个空间在生成数据集架构时应被忽略。

Dim newDS As New System.Data.DataSet()Dim nsStr()As stringnewDS.InferXmlSchema("dataOnly.xml",nsStr))Me.daCategories.Fill(newDS.Tables("Categories"))Me.daProducts.Fill(newDS.Tables(Products"))newDS.Relations.Add("CategoriesProducts", _newDS.Tables("Categories").Columns("CategoryID"), _newDS.Tables("Products").Columns("CategoryID"))前两行代码声明了数据集和String数组变量,第3行将结果传递到InferXmlSchema方法中。

接下来的代码给新数据集添加并填充了新的数据关系,然后SetBindings函数将XML窗体控件绑定到数据集上。

4.WriteXmlSchema方法将数据集架构(包括表、列和约束)写到指定输出中。

这个方法和其他XML方法一样,都接受相同的输出参数。

Me.dsMaster1.WriteXmlSchema("testSchema.xsd")Messagebox.Show("Finished","WriteXmlSchema")5. 与ReadXml类似,数据集的WriteXml方法也可将XML数据或可选的数据集架构信息写到指定输出中。

VB环境下利用MSComm控件发送和接收数据

VB环境下利用MSComm控件发送和接收数据
在挖掘学习算法时 # 做以下处理 "
’()!"%$"%$,6!"%$"#$, #-./0) 学 习 内 容 形 式 为 文 本 形 式 , !/78/) 学习内容形式为多媒体形式 , $ ’()!"#$"%$,6!"#$"#$, #-./0) 学 习 策 略 为 教 材 学 习 , ! /78/) 学习策略为题库学习 , $ ’()!"&$"%$,6!"&$"#$, #-./0) 考 核 方 式 为 主 观 题 考 核 , !/78/) 考核方式为客观题考核 , $
-’(&’( ! 向 发 送 缓 冲 区 中 写 入 数 据 # 在 设 计 阶 段 时
无效 $ 运行阶段时为只读 %
./01,20*3+ ! 在 )45*66 控 件 设 置 5*6678,%( 属 性为 5*6678.,9,:8, 并产生 -%5*66 事件之前 $ 设置 或返回要接收的字符数 " 4/01,20*3+! 在 )45*66 控件设置 5*6678,%( 属性 为 5*66784,%+ 并 产 生 -%5*66 事 件 之 前 $ 指 定 发 送 缓冲区中允许的最少字符数 " 4,((:%;2 ! 设 置 或 返 回 初 始 化 参 数 $ 即 波 特 率 & 奇 偶
I1:8D(, 4’J .:90/,K(G*KLM,HI1,22 <M,HN29:: N2 $%! (,;,1> ( 将 键 盘 键 入 的 字 符 传 给 .:90/,K(G*K 控 件 和
!""#
!!
性接收数据 !
I1:8D(, 4’J 5*66D%+=L53:9Q<> ( 用户单击 5*66D%+= 按钮后读取输入缓冲区中的

vbnet读取xml的方法

vbnet读取xml的方法

vbnet读取xml的方法【最新版3篇】目录(篇1)I.vbnet读取xml的方法概述1.vbnet是一种面向对象的编程语言,可用于开发Windows平台下的应用程序。

2.xml是一种标记语言,用于描述数据结构和内容。

3.vbnet读取xml的方法可以用于从xml文件中获取数据,并将其转换为可读的数据结构。

II.vbnet读取xml的方法详细说明1.使用vbnet的XmlDocument类读取xml文件。

2.XmlDocument类提供了许多方法,可用于解析和操作xml文件。

3.使用XmlDocument类的Load方法加载xml文件,并将其解析为一个XmlDocument对象。

4.使用XmlDocument对象的SelectNodes方法,可以获取xml文件中指定标签下的所有节点。

5.使用XmlDocument对象的SelectSingleNode方法,可以获取xml 文件中指定标签下的第一个节点。

6.使用XmlDocument对象的ReadXml方法,可以将xml文件中的数据读取为一个字符串。

7.使用XmlDocument对象的WriteXml方法,可以将数据写入到xml 文件中。

正文(篇1)vbnet是一种面向对象的编程语言,可用于开发Windows平台下的应用程序。

xml是一种标记语言,用于描述数据结构和内容。

vbnet读取xml 的方法可以用于从xml文件中获取数据,并将其转换为可读的数据结构。

以下是vbnet读取xml的方法的详细说明。

使用vbnet的XmlDocument类读取xml文件。

XmlDocument类提供了许多方法,可用于解析和操作xml文件。

使用XmlDocument类的Load方法加载xml文件,并将其解析为一个XmlDocument对象。

使用XmlDocument 对象的SelectNodes方法,可以获取xml文件中指定标签下的所有节点。

使用XmlDocument对象的SelectSingleNode方法,可以获取xml文件中指定标签下的第一个节点。

VB6.0操作XML文件

VB6.0操作XML文件

VB6.0操作XML文件XML文件如下:<?xml version="1.0" encoding="gb2312"?><testlist><test><id>1</id><name>自由飞翔</name><time>2007-12-7</time></test><test><id>2</id><name>自由</name><time>2007-12-7</time></test></testlist>以下是VB6.0的代码:'工程->引用->Mircosoft XML6.0Dim XMLDoc As DOMDocumentDim root As IXMLDOMNodeDim xlst As IXMLDOMNodeList, xlst1 As IXMLDOMNodeListDim xn As IXMLDOMNodeDim xnf As IXMLDOMNodeDim xe As IXMLDOMElementSet XMLDoc = New DOMDocumentXMLDoc.Load "F:\example\test.xml" 'xml文件路径根据存放路径不同而不同!Set xn = XMLDoc.selectSingleNode("testlist")'以下为读取xml文件内容,这里用ListView控件显示Set xlst = xn.childNodesListView1.ListItems.ClearFor Each xnf In xlstSet xe = xnfSet xlst1 = xe.childNodesWith ListView1.ListItems.Add(, , xlst1.Item(0).Text).SubItems(1) = xlst1.Item(1).Text.SubItems(2) = xlst1.Item(2).TextEnd WithNext'以下是插入一个节点(这里插入一个id=3,name=飞翔,time=date 的节点)Dim XMLId As IXMLDOMElementDim XMLName As IXMLDOMElementDim XMLTime As IXMLDOMElementDim returnValue As IXMLDOMNodeSet xe = XMLDoc.createElement("test") '创建一个<test>节点Set XMLId = XMLDoc.createElement("id")XMLId.Text = 3Set returnValue = xe.appendChild(XMLId)Set XMLName = XMLDoc.createElement("name")XMLName.Text = "飞翔"Set returnValue = xe.appendChild(XMLName)Set XMLTime = XMLDoc.createElement("time")XMLTime.Text = DateSet returnValue = xe.appendChild(XMLTime)Set returnValue = xn.appendChild(xe) '添加到<testlist>节点中XMLDoc.Save "F:\example\test.xml"'删除XML中id=2的节点Set xlst = XMLDoc.SelectSingleNode("testlist").ChildNodes For Each xnf In xlstSet xe = xnfIf xe.childNodes(0).Text = "2" Thenxn.removeChild xeEnd IfNext xnfXMLDoc.Save "F:\example\test.xml"。

vb.net创建、修改、读取XML的方法

vb.net创建、修改、读取XML的方法

创建、修改、读取XML的方法''' <summary>''' 创建XML文件''' </summary>''' <param name="xmlFileName">要创建的XML文件名</param>''' <remarks></remarks>Private Sub createXML(ByVal xmlFileName As String)TryDim writer As New Xml.XmlTextWriter(Application.StartupPa th & "" & xmlFileName, System.Text.Encoding.GetEncoding("utf-8"))'使用自动缩进便于阅读writer.Formatting = Xml.Formatting.Indentedwriter.WriteRaw("<?xml version=""1.0"" encoding=""utf-8"" ?>")'书写根元素()writer.WriteStartElement("Config")'添加次级元素writer.WriteStartElement("DatabaseSetting")'添加子元素()writer.WriteElementString("DataSource", Me.cmbHostName. SelectedItem.ToString.Trim)'为Datasource添加一个属性为value,值为test 的属性'writer.WriteAttributeString("value","test")writer.WriteElementString("InitialCatalog", Me.cmbDatabase Name.SelectedItem.ToString.Trim)writer.WriteElementString("UserID", Me.txtUserName.T ext.Tri m)writer.WriteElementString("Password", Me.txtPassword.T ext. Trim)'关闭次级元素DatabaseSettingwriter.WriteEndElement()'添加次级元素StationSettingwriter.WriteStartElement("StationSetting")'添加子元素writer.WriteElementString("StoreID", Me.cmbStoreID.Selecte dItem.ToString.Trim)writer.WriteElementString("StationID", Me.cmbStationID.Sel ectedItem.ToString.Trim)'关闭次级元素StationSettingwriter.WriteEndElement()'关闭根元素writer.WriteFullEndElement()'将XML写入文件并关闭writerwriter.Close()Catch ex As ExceptionMsgBox(ex.Message & vbCrLf & ex.StackTrace)End TryEnd Sub''' <summary>''' 修改XML''' </summary>''' <param name="xmlFileName">要修改的XML文件名</param>''' <param name="rootName">XML文件中的根元素名称</param>''' <param name="elementNameArry">要修改的元素数组</param>''' <param name="innerTextArry">对应于要修改的元素数组的修改文本数组</param>''' <remarks></remarks>Public Sub modifXML(ByVal xmlFileName As String, ByVal ro otName As String, ByVal elementNameArry() As String, ByVal in nerTextArry() As String)If puter.FileSystem.FileExists(Application.StartupPat h.Trim & "" & xmlFileName) ThenDim doc As New Xml.XmlDocumentdoc.Load(Application.StartupPath.Trim & "" & xmlFileName) Dim list As Xml.XmlNodeList = doc.SelectSingleNode(rootN ame).ChildNodesFor Each xn As Xml.XmlNode In listDim xe As Xml.XmlElementxe = xnDim nls As Xml.XmlNodeList = xe.ChildNodesFor Each xn1 As Xml.XmlNode In nlsDim xe2 As Xml.XmlElementxe2 = xn1For i As Integer = 0 To elementNameArry.Length - 1If = elementNameArry(i) Thenxe2.InnerText = innerTextArry(i)End IfNextNextNextdoc.Save(Application.StartupPath.Trim & "" & xmlFileName) End IfEnd Sub''' <summary>''' 读取XML文件''' </summary>''' <param name="xmlFileName">要读取的XML文件名</param>''' <remarks></remarks>Private Sub readXMl(ByVal xmlFileName As String)TryIf puter.FileSystem.FileExists(Application.StartupPat h & "" & xmlFileName) ThenDim doc As New Xml.XmlDocumentdoc.Load(Application.StartupPath.Trim & "" & xmlFileName) Dim re As Xml.XmlNodeReader = New Xml.XmlNodeReader (doc)Dim tmpStr As String = ""Dim name As StringWhile re.ReadSelect Case re.NodeTypeCase Xml.XmlNodeType.Elementname = Case Xml.XmlNodeType.TextIf name.Equals("DataSource") ThentmpStr = tmpStr & "Data Source=" & re.ValueEnd IfIf name.Equals("InitialCatalog") ThentmpStr = tmpStr & ";Initial Catalog=" & re.ValueEnd IfIf name.Equals("UserID") ThentmpStr = tmpStr & ";User ID=" & re.ValueEnd IfIf name.Equals("Password") ThentmpStr = tmpStr & ";Password=" & re.Value End IfEnd SelectEnd WhileEnd IfCatch ex As ExceptionMsgBox(ex.Message & vbCrLf & ex.StackTrace) End TryEnd Sub。

如何使用Visual Basic读取XML文件

如何使用Visual Basic读取XML文件

如何使用Visual Basic读取XML文件刘春雪;冮波;朱明【摘要】1引言rnXML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Lan-guage,标准通用标记语言)。

XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。

【期刊名称】《黑龙江气象》【年(卷),期】2011(028)003【总页数】1页(P43-43)【关键词】XML文件;Basic;Internet环境;标准通用标记语言;可扩展标记语言;读取;HTML;文档信息【作者】刘春雪;冮波;朱明【作者单位】黑龙江省气象信息中心,黑龙江哈尔滨150030;佳木斯卫星地面站,黑龙江佳木斯154004;铁力市气象局,黑龙江铁力152500【正文语种】中文【中图分类】TP311.1XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。

XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。

扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。

事实上XML与其他数据表现形式最大的不同是:它极其简单。

这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

XML文件是一个树形结构的文件,文件有一个根节点,根节点下面有若干的子节点。

VBA中操作XML

VBA中操作XML

VBA中操作XMLOFFICE2007之后使用了OpenXml标准(伟大的改变),定制文本级的Ribbon可以通过修改压缩包内的xml文件来实现。

先学习一下VBA中操作XML的方法先引用Microsoft XML V6.0,对应的文件是msxml6.dll。

前期绑定,方便使用智能提示。

一、DOM方式创建一个XML文件:内容是自定义Ribbon的一个简单框架。

文件保存在桌面。

1 Sub CreateXmlFile() 23 '创建文档对象模型4 Dim xmldoc As New DOMDocument 56 '创建根节点,XML文档有且必须仅有一个根节点。

7 Dim root As IXMLDOMElement 8 '/office/2006/01/customui 2007版本使用的命名空间9 '/office/2009/07/customui 2010版本使用的命名空间10 Set root = xmldoc.createElement('customUI')11 root.setAttribute 'xmlns', '/office/2009/07/customui'12 Set xmldoc.DocumentElement = root '指定根节点1314 'ribbon元素15 Dim xmlribbon As IXMLDOMElement16 Set xmlribbon = xmldoc.createElement('ribbon')17 root.appendChild xmlribbon1819 'tabs元素20 Dim xmltabs As IXMLDOMElement21 Set xmltabs = xmldoc.createElement('tabs')22 xmlribbon.appendChild xmltabs2324 'tab元素25 Dim xmltab As IXMLDOMElement26 Set xmltab = xmldoc.createElement('tab')27 xmltab.setAttribute 'id', 'CustomTab'28 xmltab.setAttribute 'label', '自定义标签'29 xmltabs.appendChild xmltab3031 'group元素32 Dim xmlgroup As IXMLDOMElement33 Set xmlgroup = xmldoc.createElement('group')34 xmlgroup.setAttribute 'id', 'CustomGroup'35 xmlgroup.setAttribute 'label', '自定义分组'36 xmltab.appendChild xmlgroup3738 'button元素,并设置button的属性39 Dim xmlbutton As IXMLDOMElement40 Set xmlbutton = xmldoc.createElement('button')41 xmlbutton.setAttribute 'id', 'btn'42 xmlbutton.setAttribute 'label', '插入公司名称'43 xmlbutton.setAttribute 'size', 'large'44 xmlbutton.setAttribute 'onAction', 'InsertCompanyName'45 xmlgroup.appendChild xmlbutton4647 '文件保存到桌面48 xmldoc.Save ('C:\Users\stone\Desktop\1.xml')49 End Sub 下面是创建出来xml文件内容。

vba对xml文件解析

vba对xml文件解析

Sub delete()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1'取报表日期' TabDate = CDate(Left(Worksheets("Sheet1").Cells(2, 4).Value, 11))'DateString = Format(TabDate, "yyyy-mm-dd")'DateStringF = Format(TabDate, "yyyymmdd")'On Error Resume Next'ActiveWorkbook.Save'On Error GoTo 0'ThisWorkbook.Application.StatusBar = "正在准备网调日报数据,请稍候..."'FileName = FD288.dat'Dim MisFileName As String'MisFileName = HDRB_MISPath & "福建" & DateStringF & ".FD288"'Open FileName For Output As #1'tmpStr = "// 福建" & DateStringF & ".FD288"'Print #1, tmpStr'Print #1, " "'tmpStr = "<发电负荷288点::福建date='" & DateString & "'>"'Print #1, tmpStr'LineMaxCharNum'ItemCode = "@@数据名称"'ItemVal = "数据值"'tmpStr = ItemCode & Space(1) & ItemVal'Print #1, tmpStrFor i = 0 To theRowCounttheRow = theRowS + itheCol = theColS'Worksheets("sheet1").Cells(theRow, theCol).Select'Worksheets("Sheet1").Cells(field2(k), field3(k)).ValueItemCode = Worksheets("Sheet1").Cells(theRow, theCol).Value'If InStr(ItemCode, "</cim:formula>") <> 0 Or InStr(ItemCode, "</operands>") <> 0 Or InStr(ItemCode, "<operands>") <> 0 Then'deleteIf InStr(ItemCode, "</operands>") <> 0 ThenWorksheets("sheet1").Rows(theRow).deletei = i - 1End IfIf InStr(ItemCode, "<operands>") <> 0 ThenWorksheets("sheet1").Rows(theRow).deletei = i - 1End If'解析公式'If InStr(ItemCode, "<cim:formula.define>") Then's_num = InStr(ItemCode, "<cim:formula.define>")'ItemCode = Mid(ItemCode, s_num + 20)'ItemCode = RTrim(ItemCode)'lengthall = Len(ItemCode)'ItemCode = Mid(ItemCode, 1, lengthall - 21)'Worksheets("Sheet1").Cells(theRow, theCol).Value = ItemCode' End If'Print #1, tmpStrNext i'文件结束' tmpStr = "</发电负荷288点::福建>"' Print #1, tmpStr'Close #1End SubSub id()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1For i = 0 To theRowCounttheRow = theRowS + itheCol = theColSItemCode = Worksheets("Sheet1").Cells(theRow, theCol).Value'解析idIf InStr(ItemCode, "P:") <> 0 Thens_num = InStr(ItemCode, "P:")ItemCode = Mid(ItemCode, s_num + 2)ItemCode = RTrim(ItemCode)lengthall = Len(ItemCode)ItemCode = Mid(ItemCode, 1, lengthall - 2)Worksheets("Sheet1").Cells(theRow, theCol).Value = ItemCodeEnd IfNext iEnd SubSub chinese()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1For i = 0 To theRowCounttheRow = theRowS + itheCol = theColSItemCode = Worksheets("Sheet1").Cells(theRow, theCol).Value'解析中文If InStr(ItemCode, "<cim:>") <> 0 Thens_num = InStr(ItemCode, "<cim:>")ItemCode = Mid(ItemCode, s_num + 17)ItemCode = RTrim(ItemCode)lengthall = Len(ItemCode)If InStr(ItemCode, "</cim:>") <> 0 ThenItemCode = Mid(ItemCode, 1, lengthall - 18)End IfWorksheets("Sheet1").Cells(theRow, theCol).Value = ItemCodeEnd IfNext iEnd SubSub formular()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1For i = 0 To theRowCounttheRow = theRowS + itheCol = theColSItemCode = Worksheets("Sheet1").Cells(theRow, theCol).Value'解析公式If InStr(ItemCode, "<cim:formula.define>") Thens_num = InStr(ItemCode, "<cim:formula.define>")ItemCode = Mid(ItemCode, s_num + 20)ItemCode = RTrim(ItemCode)lengthall = Len(ItemCode)ItemCode = Mid(ItemCode, 1, lengthall - 21)Worksheets("Sheet1").Cells(theRow, theCol).Value = ItemCodeEnd IfNext iEnd SubSub zhuanzhi()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As IntegerDim id_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1id_num = 0For i = 0 To theRowCounttheRow = theRowS + itheCol = theColSItemCode = Worksheets("Sheet1").Cells(theRow, theCol).Value'解析公式If InStr(ItemCode, "</cim:formula>") <> 0 Thenid_num = id_num + 1Worksheets("Sheet1").Cells(theRow + 1, 2).Value = id_numWorksheets("Sheet1").Cells(theRow + 1, 3).Value =Worksheets("Sheet1").Cells(theRow + 2, 1).ValueWorksheets("Sheet1").Cells(theRow + 2, 1).Value = "aaaaaa"Worksheets("Sheet1").Cells(theRow + 1, 4).Value = Worksheets("Sheet1").Cells(theRow + 3, 1).ValueWorksheets("Sheet1").Cells(theRow + 3, 1).Value = "bbbbbb"For j = 1 To 50If InStr(Worksheets("Sheet1").Cells(theRow + 3 + j, 1).Value, "</cim:formula>") = 0 ThenWorksheets("Sheet1").Cells(theRow + 1, 4 + j).Value = Worksheets("Sheet1").Cells(theRow + 3 + j, 1).V alueWorksheets("Sheet1").Cells(theRow + 3 + j, 1).Value = "cccccc"ElseExit ForEnd IfNext jEnd IfNext iEnd SubSub finish()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As IntegerDim id_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1id_num = 0For i = 0 To theRowCounttheRow = theRowS + itheCol = theColSItemCode = Worksheets("Sheet1").Cells(theRow, theCol).Value'解析公式If InStr(ItemCode, "</cim:formula>") <> 0 ThenWorksheets("Sheet1").Rows(theRow).deletei = i - 1End IfIf InStr(ItemCode, "aaaaaa") <> 0 ThenWorksheets("Sheet1").Rows(theRow).deletei = i - 1End IfIf InStr(ItemCode, "bbbbbb") <> 0 ThenWorksheets("Sheet1").Rows(theRow).deletei = i - 1End IfIf InStr(ItemCode, "cccccc") <> 0 ThenWorksheets("Sheet1").Rows(theRow).deletei = i - 1End IfNext iEnd SubSub delete_new()Dim i As LongDim nSpace As LongDim ItemCode As String '代码Dim ItemVal As String '数值Dim TabDate As DateDim theRowCount As Long '有效报表列Dim theRowS As Long '开始数据所在行Dim theColS As Long '开始数据所在列Dim theRow As Long '数据所在行Dim theCol As Long '数据所在列Dim DataNum As Long '数据个数Dim FileName As String, LineOut As StringDim DateString As StringDim DateStringF As StringDim tmpStr As StringDim s_num As IntegerDim id_num As Integerdfile = ""theRowCount = 65000theRowS = 1theColS = 1id_num = 0For i = 0 To theRowCounttheRow = theRowS + itheCol = theColSItemCode = Worksheets("Sheet1").Cells(theRow, theCol).ValueIf InStr(ItemCode, "</operands>") <> 0 ThenWorksheets("Sheet1").Rows(theRow).deletei = i - 1End IfIf InStr(ItemCode, "<operands>") <> 0 ThenWorksheets("Sheet1").Rows(theRow).deletei = i - 1End IfNext i End Sub。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
什么是XML
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
IXMLDOMNode类描述了一个节点,该类提供了一系列用于搜索和操纵XML文档的属性和方法。
selectSingleNode 方法用于搜索指定节点的后代,用于搜索指定节点路径的语言称为XPATH,XPATH非常棘手,本文就不详细说明其规范了。下面我们将介绍两个对搜索子节点有特别有用并且简单的方法。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
DOMDocument提供了几种创建新节点的方法。CreateElement方法为文档创建一个新的元素节点,其他创建节点的方法有createAttribute, createProcessingInstruction, 和 createTextNode,在这里就不一一介绍了。
IXMLDOMNode类
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文件中。
</Entry>
...
</Addreቤተ መጻሕፍቲ ባይዱses>
注意相似的节点不需要包含相同的信息,例如第一个Entry节点包含了地址信息和家庭电话号码,第二个Entry节点包含了Work和WorkFax电话号码,而没有包含第一个Entry节点包含的信息。
XML工具
如前面的例子显示,XML语法是如此的简单以至于你可以在很短的时间作一个XML解析器,幸运的是你不必这样做,因为XML工具可以运行在各种平台上,包括可以安装了Visual Basic的Windows。
在给selectsingleNode方法中输入子节点的名字,该方法将在节点的子节点进行精确匹配搜索。如果在输入的字符串前面加上".//",那么将搜索节点的全部后代。
' Search for a child node named "LastName."
Set last_name_node = address_node.selectSingleNode("LastName")
</Entry>
<Entry Type="Work">
<FirstName>Betty</FirstName>
<LastName>Masterson</LastName>
<Phone Type="Work">937-878-4958</Phone>
<Phone Type="WorkFax">937-878-4900</Phone>
"</Person>"
DOMDocument的xml属性返回文档的xml描述,可以显示这些返回值看看这些文档究竟是什么样子,也可以将它存储为一个文件,但这完全不必要,因为DOMDocument对象的save方法已经自动将他们存储了。
DOMDocument对象的documentElement属性表示文档数据的根结点,通常情况下操作XML文档都从这里开始。
XSD可以定义XML文档的格式,XSL扩展样式单定义了怎样将XML文档转换成其他可以在WEB浏览器中浏览的文件格式,比如HTML文件。
这些工具实际上比XML本身更复杂,所以所有讲解XML的书籍都花了很大的篇幅解释这些XML工具。但这超出了本文的范围,有兴趣的读者可以参考有关资料。
XML的优点
我们谈到XML长于在不同的应用程序之间交换数据,XML文件也便于构建小的数据库,不久以前,软件都使用INI文件存储配置信息、用户参数以及其他信息,后来微软引入了系统注册表,接作微软告诉我们不应该再使用INI文件了,从那时起Visual Basic对INI文件的支持被削弱了。但不幸的是注册表有几个致命的缺点:不是简单的文本文件,难于读写、可能会变得庞大和缓慢、如果注册表不知何故出现问题,将有可能造成系统死机。
将配置信息放在XML文件中可以避免这些问题,甚至可以将XML文件设置为一个共享文件,这样在不同的计算机上的用户就可以共享数据,这是注册表所不能比拟的。
在被称为下一代ASP的中可以在WEB页中直接使用XML,你可以使用数据绑定控件直接绑定数据并自动显示。
当然也可以不选择XML,使用文本文件、注册表、数据库都可以完成XML所能完成的任务,XML只是你在数据存储和恢复的另一种工具而已。
' Search for any descendant named "LastName."
Set last_name_node = address_node.selectSingleNode(".//LastName")
下面列出了IXMLDOMNode对象的部分非常有用的属性:
DOMDocument 类
文档对象模型(DOM)使用了一系列相应的对象描述了XML文档的等级状态,DOMDocument类是一个描绘XML文档的DOM结构的MSXML类。
DOMDocument类仅仅提供了很少的几个有用的属性和方法。Load方法载入一个xml文件,loadxml方法将字符串作为xml数据添加到对象中。例如,下面的代码就将一个小的xml文件添加到名为xml_document的文档中。
正是这些L工具而不是XML本身使XML变得更强大和复杂。不同的解析器使你可以某一时刻加载整个XML文档或只加载某个节点,与此相反,XML Writer 可以同时创建一个XML文档和节点。
DOM解析器使我们能够很方便的加载、复制、排序、修改和存储XML文件,遍历节点获得名称或属性,并给结果排序。虽然他们的功能没有真正的关系数据库强大,但DOM的这些特点依然非常有用。
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.
下面的代码是显示了VALUE.XML文件的结构:
Visual 提供了使用XML、XSL以及其他XML工具的完整工具。但不用等待,微软XML核心服务(MSXML)版本4.0提供了从Visual Basic6.0加载和存储XML文档的工具。
在/xml/default.asp中下载最新版本的MSXML,并安装在计算机上。在Visual Basic 6.0中使用Microsoft XML V4.0象引用其他对象一样,首先在工程菜单中选择引用菜单项,选择Microsoft V4.0,单击OK,一切完成后就现在就可以在VB应用程序中添加XML对象了。
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>
<Phone Type="WorkFax">987-654-3210<Phone>
如果不愿意在节点中包含一个值,那么可以不需要结束标记,可以用在开始标记的后面加一个斜线来结束节点,在下面的例子中,Phone标记的Number属性就存储了一个电话号码,所以就不需要一个结束标记:
<Phone Type="WorkFax" Number="987-654-3210" />
attributes.节点属性集合
nodeName.节点的标记名
nodeTypeString.节点的类型
ownerDocument.返回DOMDocument对象包含的节点
text.表示节点包含的文本内容。如果该节点包含其他节点,那么text代表了所有节点的文本内容的组合。
xml.给出了节点的xml内容,例如:"<FirstName>Rod</FirstName>".
ChildNodes集合包含了节点的子节点。要给节点增加一个子节点,首先必须给使用DOMDocument对象的节点创建方法,然后将这个新建的节点加入到父节点的childNodes集合中。下面的代码展示了创建一个新的子节点的子程序,并使用父节点的appendChild方法将其加入到父节点中:
相关文档
最新文档