对XML文件的CRUD(添加,读取,搜索,修改,删除)的例子

如有一xml文件(myTest.xml)如下:

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< Root >
None.gif  
< Profile  Code ="001"  Name ="myx"  City ="gz"   />
None.gif  
< Profile  Code ="002"  Name ="myName"  City ="bj"   />
None.gif
</ Root >

一、添加
现在要在Root下加节点Profile
ExpandedBlockStart.gif ContractedBlock.gif      Function Create() Function Create(ByVal strCode As StringByVal strName As StringByVal strCity As StringAs Boolean
InBlock.gif        
Try
InBlock.gif            
Dim xmlDoc As XmlDocument = New XmlDocument
InBlock.gif            xmlDoc.Load(
"myTest.xml")
InBlock.gif
InBlock.gif            
Dim NodeList As XmlNodeList = xmlDoc.SelectSingleNode("//Root").ChildNodes
InBlock.gif            
'下面是查Code是否唯一  '后有自动增加Code的值的代码.
InBlock.gif
            For Each xn As XmlNode In NodeList
InBlock.gif                
Dim myxe As XmlElement = xn '转换类型
InBlock.gif
                If myxe.GetAttribute("Code"= Filtrate(strCode) Then
InBlock.gif                    
Return False
InBlock.gif                    
Exit Function
InBlock.gif                
End If
InBlock.gif            
Next
InBlock.gif
InBlock.gif            
Dim root As XmlNode = xmlDoc.SelectSingleNode("Root"'查找<Root>
InBlock.gif
            Dim xe As XmlElement = xmlDoc.CreateElement("Profile"'创建一个<Profile>节点
InBlock.gif
            xe.SetAttribute("Code", Filtrate(strCode)) '设置该节点Code属性
InBlock.gif
            xe.SetAttribute("Name", Filtrate(strName)) '设置该节点的Name属性            
InBlock.gif
            xe.SetAttribute("City", Filtrate(strCity)) '设置该节点的City属性
InBlock.gif

InBlock.gif            
'以下是在<Profile>下建子节点<"myTest">
InBlock.gif
            'XmlElement xesub1=xmlDoc.CreateElement("myTest");
InBlock.gif
            'xesub1.InnerText="myText"; '设置文本节点
InBlock.gif
            'xe1.AppendChild(xesub1); '添加到<Root>节点中
InBlock.gif

InBlock.gif            root.AppendChild(xe) 
'添加到<Root>节点中
InBlock.gif
            xmlDoc.Save("myTest.xml")
InBlock.gif            
Return True
InBlock.gif        
Catch ex As Exception
InBlock.gif            
Return False
InBlock.gif        
End Try
ExpandedBlockEnd.gif    
End Function

这样加来结果是这样的:
None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< Root >
None.gif  
< Profile  Code ="001"  Name ="myx"  City ="gz"   />
None.gif  
< Profile  Code ="002"  Name ="myName"  City ="bj"   />
None.gif  
< Profile  Code ="003"  Name ="New Name"  City ="New City"   /> <!-- 新加的 -->
None.gif
</ Root >
None.gif


二、显示所有数据
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
Function Retrieve() Function Retrieve() As DataSet
InBlock.gif        
Try
InBlock.gif            
Dim doc As XmlDocument = New XmlDocument
InBlock.gif            doc.Load(
"myTest.xml")
InBlock.gif            
Dim node As XmlNode = doc.SelectSingleNode("//Root")
InBlock.gif            
Dim read As StringReader = New StringReader(node.OuterXml)
InBlock.gif            
Dim myds As DataSet = New DataSet
InBlock.gif            myds.ReadXml(read)
InBlock.gif            
Return myds
InBlock.gif            
If Not myds Is Nothing Then myds.Dispose()
InBlock.gif        
Catch ex As Exception
InBlock.gif            
'  MsgBox(ex.Message)
InBlock.gif
        End Try
InBlock.gif
ExpandedBlockEnd.gif    
End Function

三、搜索数据,读某一条数据也可以用这直接读。
ExpandedBlockStart.gif ContractedBlock.gif      Function Search() Function Search(ByVal strKeyWord As StringByVal strKeyText As StringAs DataSet
InBlock.gif        
Try
InBlock.gif            
Dim doc As XmlDocument = New XmlDocument
InBlock.gif            doc.Load(
"myTest.xml")
InBlock.gif
InBlock.gif            
Dim NodeList As XmlNodeList = doc.SelectSingleNode("//Root").ChildNodes
InBlock.gif
InBlock.gif            
Dim i As Integer
InBlock.gif            
Dim strXml As String = "<myx_Search>" '把搜索到的放在这里
InBlock.gif

InBlock.gif            
For Each xn As XmlNode In NodeList
InBlock.gif                
If strKeyText = "" Or strKeyText = "全部" Then '搜索所有的属性值
InBlock.gif
                    For i = 0 To xn.Attributes.Count - 1
InBlock.gif                        
Dim xe As XmlElement = xn '转换类型
InBlock.gif
                        If xe.GetAttribute(xn.Attributes(i).Name) = strKeyWord Then
InBlock.gif                            strXml 
= strXml & xn.OuterXml
InBlock.gif                        
End If
InBlock.gif                    
Next
InBlock.gif                
Else
InBlock.gif                    
Dim xe As XmlElement = xn '转换类型
InBlock.gif
                    If xe.GetAttribute(strKeyText) = strKeyWord Then  '搜索指定的属性值
InBlock.gif
                        strXml = strXml & xn.OuterXml
InBlock.gif
InBlock.gif                    
End If
InBlock.gif                
End If
InBlock.gif            
Next
InBlock.gif            strXml 
= strXml & "</myx_Search>"
InBlock.gif
            'MsgBox(strXml)
InBlock.gif
            Dim read As StringReader = New StringReader(strXml)
InBlock.gif            
Dim myds As DataSet = New DataSet
InBlock.gif            myds.ReadXml(read)
InBlock.gif            
Return myds
InBlock.gif            
If Not myds Is Nothing Then myds.Dispose()
InBlock.gif        
Catch ex As Exception
InBlock.gif            
MsgBox(ex.Message)
InBlock.gif        
End Try
InBlock.gif
ExpandedBlockEnd.gif    
End Function

None.gif

四、修改
ExpandedBlockStart.gif ContractedBlock.gif      Public   Function Update() Function Update(ByVal strCode As StringByVal strName As StringByVal strCity As StringAs Boolean
InBlock.gif        
Try
InBlock.gif            
Dim xmlDoc As New XmlDocument
InBlock.gif            xmlDoc.Load(
"myTest.xml")
InBlock.gif
InBlock.gif            
Dim xnl As XmlNodeList = xmlDoc.SelectSingleNode("//Root").ChildNodes
InBlock.gif            
For Each xn As XmlNode In xnl
InBlock.gif                
Dim xe As XmlElement = xn '转换类型
InBlock.gif
                If xe.GetAttribute("Code"= strCode Then
InBlock.gif                    
'xe.SetAttribute("Code", strCode)  'xe.InnerText=""
InBlock.gif
                    xe.SetAttribute("Name", strName)
InBlock.gif                    xe.SetAttribute(
"City", strCity)
InBlock.gif                
End If
InBlock.gif            
Next
InBlock.gif            xmlDoc.Save(
"myTest.xml")
InBlock.gif            
Return True
InBlock.gif
InBlock.gif        
Catch ex As Exception
InBlock.gif            
Return False
InBlock.gif        
End Try
ExpandedBlockEnd.gif    
End Function

五、删除
ExpandedBlockStart.gif ContractedBlock.gif Function Delete() Function Delete(ByVal strCode As StringAs Boolean
InBlock.gif        
Try
InBlock.gif            
Dim xmlDoc As New XmlDocument
InBlock.gif            xmlDoc.Load(
"myTest.xml")
InBlock.gif
InBlock.gif            
Dim sxn As XmlNode = xmlDoc.DocumentElement.S _
electSingleNode(
"//Root/Profile[@Code=" & strCode & "]")
InBlock.gif            xmlDoc.SelectSingleNode(
"//Root").RemoveChild(sxn)
InBlock.gif            
'Dim xn As XmlNode = xmlDoc.SelectSingleNode("//ProFile/Vendor[@Code=" & strCode & "]")
InBlock.gif
            ''For Each xn As XmlNode In xnl
InBlock.gif
            ''    Dim xe As XmlElement = xn
InBlock.gif
            ''    If xe.GetAttribute("Code") = strCode Then
InBlock.gif
            ''        ' xe.RemoveAll() '删除该节点的全部内容 
InBlock.gif
            ''        ' xe.RemoveAttribute("Name") 删除Name属性
InBlock.gif
            ''    End If
InBlock.gif
            ''Next
InBlock.gif
            xmlDoc.Save("myTest.xml")
InBlock.gif            
Return True
InBlock.gif        
Catch ex As Exception
InBlock.gif            
MsgBox(ex.Message)
InBlock.gif            
Return False
InBlock.gif        
End Try
InBlock.gif
ExpandedBlockEnd.gif    
End Function


过滤:
ExpandedBlockStart.gif ContractedBlock.gif      Private   Function Filtrate() Function Filtrate(ByVal InnerText As StringAs String
InBlock.gif        InnerText 
= InnerText.Replace("&""")
InBlock.gif        InnerText 
= InnerText.Replace("<""")  '用半角变全角,或用&lt;&gt;这样的
InBlock.gif
        InnerText = InnerText.Replace(">""")
InBlock.gif        InnerText 
= InnerText.Replace("""""")
InBlock.gif        
Return InnerText
ExpandedBlockEnd.gif    
End Function

转载于:https://www.cnblogs.com/myx/archive/2004/12/24/81366.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值