第10章 用VBNET访问XML文档
.NET平台中访问XML数据的方法

.NET平台中访问XML数据的方法摘要:XML语言的开放性,语法的统一性,使得XML成为不同系统之间的数据交换的标准语言。
本文论述了XML文档的一般特点、XML同数据库的区别,简述了应用XML的优势。
给出了.NET平台下四种访问XML数据的方式,最后对四种方法进行简单比较。
关键词:XML数据库.NET访问XML (ExtensibleMarkupLanguage) 是可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML 是SGML (StandardGen2eralized Markup Language) 的子集,XML 在1998 年 2 月已被W3C 确认为国际标准, 目前XML已被大量应用于异构系统间的数据交换,数据集成,数据共享,将同一数据以不同的形式表现出来等。
1.XML 的特点XML 语言具有三个显著特点:内容和形式分离、良好的可扩展性、良好的可移植性和良好的描述性。
1.1内容和形式分离。
这个特性为XML的应用带来了很大的好处。
当只想改变数据的表现形式时,只需修改从XML 文档中分离出的用于数据表现的样式单即可。
如XSL 技术,正是由于XML文件的内容和结构分离,XSL才可以在不影响内容的情况下改变XML文件结构。
同时基于这样的特点,企业系统可以轻松地实现内容管理和流程管理的彻底分离。
1.2良好的可扩展性。
XML 允许程序员制定自己的标记集,对于一个行业或一特定群也可以制定在自己范围内的通用标记,使得XML 可以轻松适应每一个领域。
例如:MathML(数学标记语言)、和TecML(技术数据标记语言),每种语言都用于其特定的环境。
1.3良好的可移植性。
XML具有统一的标准语法,只要交换数据的平台能处理XML 文档,就能处理由XML 标记的各种格式的数据这样就使得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 转义方法

程序员经常需要在其应用程序中处理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```从输出结果可以看出,原始字符串中的特殊字符已经被成功转义为对应的实体引用。
第10章VB NET数据库访问技术

2.常用方法 (1)Close 该方法关闭与数据库的连接,这时关闭任何打开连接的首 选方法,例如关闭Conn对象的连接:Conn.Close( ) (2)Open 该方法打开OleDbConnection对象使用ConnectionString属 性所指定的打开数据库连接,例如:Conn.Open( ) (3)CreateCommand 该方法创建并返回一个与该Connection关联的Command对 象。 (4)Dispose 该方法释放ponent使用的所 有资源。 (5)ChangeDatabase 该方法为打开的Connection更改当前数据库。
DataSet是离线数据访问模型中的 核心对象,它设计的目的主要是为了实现独 立于任何数据源的访问。它其实就是一个存 放在内存中的数据暂存区,这些数据必须通 过DataAdapter对象与数据库做数据交换。 在DataSet内部允许同时存放一个或多个不同 的数据表对象。可以说DataSet的作用就像内 存中的数据库管理系统,离线时,它也能独 自完成数据的新建、修改、删除和查询等操 作,而不必一直局限在和数据库联机时才能 做数据维护的工作。
1. OleDbCommand常用属性 (1)CommandText
该属性获取或设置要对数据源执行的SQL语句或存储过程。
(2)CommandTimeout
该属性和OleDbConnection对象的属性相同。
(3)CommandType
该属性获取或设置一个指示如何解释CommandText属性, 可取值如下: CommandType.StoredProcedure,指定存储过程 CommandType.TableDirect,指定表 CommandType.Text,指定文本SQL命令 例如指定SQL文本命令操作数据源: Mycmd. CommandType = CommandType.Text
VB.NET读写XML配置文件

读写XML配置⽂件XML配置⽂件代替INI()Imports System.DataPublic Class CLSReadXMLPrivate servername As String'服务器名Private Dbname As String'数据库名称Private Uid As String'数据库⽤户名Private pwd As String'数据库密码Private DSXml As New DataSetPrivate Xpath As String'Xml⽂件路径Sub New(ByVal str As String)Xpath = str'获得xml⽂件存储路径End Sub#Region "属性⽤于写⼊和得到xml⽂件内容的属性"Public Property Getserver()GetReturn servernameEnd GetSet(ByVal Value)servername = ValueEnd SetEnd PropertyPublic Property Getdbname()GetReturn DbnameEnd GetSet(ByVal Value)Dbname = ValueEnd SetEnd PropertyPublic Property Getpwd()GetReturn pwdEnd GetSet(ByVal Value)pwd = ValueEnd SetEnd PropertyPublic Property GetdUid()GetReturn UidEnd GetSet(ByVal Value)Uid = ValueEnd SetEnd Property#End Region#Region "⽅法读写xml⽂件的⽅法当xml⽂件不存在时⾃动创建⼀xml⽂件"'读取xml⽂件内容Public Function ReadXml() As BooleanTryDSXml.ReadXml(Xpath)servername = DSXml.Tables(0).Rows(0)("server")Dbname = DSXml.Tables(0).Rows(0).Item("Dbname")Uid = DSXml.Tables(0).Rows(0).Item("uid")pwd = DSXml.Tables(0).Rows(0).Item("pwd")Return TrueCatch ex As ExceptionThrow exReturn FalseEnd TryEnd Function'如果xml⽂件不存在的时候创建⼀xml⽂件Public Function WriteXml() As BooleanDim DT As New DataTableTryDSXml.Tables.Clear()DSXml.Clear()'给定table列框架DT.Columns.Add("server", GetType(String))Dt.Columns.Add("DBname", GetType(String))Dt.Columns.Add("uid", GetType(String))Dt.Columns.Add("pwd", GetType(String))Dim DR As DataRowDR = Dt.NewRowDR.Item("server") = servername DR.Item("DBname") = Dbname DR.Item("uid") = UidDR.Item("pwd") = pwdDt.Rows.Add(DR)DSXml.Tables.Add(Dt)DSXml.AcceptChanges()DSXml.WriteXml(Xpath)Return TrueCatch ex As ExceptionThrow exReturn FalseEnd TryEnd Function#End RegionEnd Class。
VB.NET读取写入XML文件

读取写入XML文件Public Class CSysXMLDim mXmlDoc As New System.Xml.XmlDocumentPublic XmlFile As StringPublic Sub New(ByVal File As String)MyClass.XmlFile = FileMyClass.mXmlDoc.Load(MyClass.XmlFile) '加载配置文件End Sub'功能:取得元素值'参数:node--节点 element--元素名'返回:元素值字符型' $--表示出错误Public Function GetElement(ByVal node As String, ByVal element As String) As StringOn Error GoTo ErrDim mXmlNode As System.Xml.XmlNode = mXmlDoc.SelectSingleNode("//" + node)'读数据Dim xmlNode As System.Xml.XmlNode = mXmlNode.SelectSingleNode(element)Return xmlNode.InnerText.T oStringErr:Return "$"End Function''功能:保存元素值'参数:node--节点名称 element--元素名 val--值'返回:True--保存成功 False--保存失败Public Function SaveElement(ByVal node As String, ByValelement As String, ByVal val As String) As BooleanOn Error GoTo errDim mXmlNode As System.Xml.XmlNode = mXmlDoc.SelectSingleNode("//" + node)Dim xmlNodeNew As System.Xml.XmlNodexmlNodeNew = mXmlNode.SelectSingleNode(element)xmlNodeNew.InnerText = valmXmlDoc.Save(MyClass.XmlFile)Return Trueerr:Return FalseEnd FunctionEnd Class例如:XML:192.168.0.6程序调用:Public Class Form1Dim xml As New CSysXML("IP.xml")Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim str As String = xml.GetElement("IP", "num")TextBox1.Text = strEnd SubEnd Class。
VB和VB_NET中的XML操作

2. 数据交换和数据整合,这是XML最激动人心的应用。
3. 媒体无关的数据发布
4. 智能代理和本地计算
5. 精确搜索
6. 文件保值
XML的语法非常的简单,XML文档由节点组成,使用打开和关闭节点描述标记,在格式上与HTML标记非常相似,它们之间最大的不同是:XML中可以自由定义标记名。比如下面的标记就描述了一个主页地址:
概述:这篇文章为计划将他们的应用程序更新到Visual 的微软Visual Basic 开发用户提供一些关于XML的建议。主要包括Visual Basic 6和Visual 对XML操作的不同之处,以及Visual 关于这方面新增工具的应用。 概述:这篇文章为计划将他们的应用程序更新到Visual 的微软Visual Basic 开发用户提供一些关于XML的建议。主要包括Visual Basic 6和Visual 对XML操作的不同之处,以及Visual 关于这方面新增工具的应用。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,可以说,“没有XML,就没有编程的未来”。
XML主要应用在以下几个方面:
1. 设计标记语言,如CML,MathML, WML等。
<web></web>
注意别大小写的,所以标记的大小写也必须相同。
节点标记中可以包含属性,比如:
<web type=”Homepage”></web>
以上只是对XML文档的简单描述,如何使用文档中包含的信息,XML标准体系中有其他的配套标准。
代码中Web节点包含属性Type,其值为Homepage.
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创建 '已经进⾏过测试,完全可以运⾏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Dim Conn As SqlConnection Dim selectCMD As SqlCommand SqlConnection=New SqlConnection(connString) SqlCommand=New SqlCommand("SELECT BookISBN,BookName,Price,Qty FROM Book where Qty<5 and ProviderID='Jh2007'", Conn) Dim BookDA As SqlDataAdapter = New SqlDataAdapter BookDA.SelectCommand = selectCMD Conn.Open() Dim BookDS As DataSet = New DataSet BookDA.Fill(BookDS, "book") BookDS.WriteXml("books.xml")
常用的XmlDocument类的方法或属性
常用来更新DOM树内容的XmlElement类方法或属性
用来导航的XmlElement类的方法或属性
第三单元 数据集与XML文档
数据集实际上是以XML形式表示的一种数据关 系视图。 因此,数据集DataSet类有用于读写XML的方法,使用 DataSet 对象的 ReadXml 方法,可以用XML中的数据填 充 DataSet,使用 DataSet 对象的 WriteXml 方法,可以 DataSet中有数据写入XML文档中。
第10章 用访问XML文档
第一单元 XML文 档
可扩展标记语言(XML) 提供一组描述结构化数据的规范, XML文档就是遵守XML规范的文本格式文档,由多对标记 及标记内容构成,包含有以下项目:
XML声明 注释 元素 子元素 属性
举例:
<Book> <BookISBN>7-302-03367-9</BookISBN> <BookName>网络程序设计大全</BookName> <Publishor>清华大学出版社</Publishor> <Price>68.00</Price> <Qty>5</Qty> </Book>
第二单元 使用DOM访问XML文档
文档对象模型 (DOM) 类是XML文档的在内存中表示形式。 通过程序访问和操作XML文档是DOM 的主要功能,DOM 使我们能够以编程方式读取、导航和修改XML文档。 DOM是由XML文件中不同的项组成,是一个树形结构。 DOM装载XML文档的过程,就是把XML文档装载入内存, XML解析器解析出各标记内容,生成节点,组成DOM树 的过程。