上一篇:关于html上脚本语言的一点小释疑 >>
给网站添加一个注册表 之 “类的实现”
‘’------------------------------------------------------------------------------------
‘’类名:RegistryObject 网页信息注册表类
‘’作者:张少棠 (Tonton)
‘’邮箱:tonton@yeah.net
‘’时间:2004年8月1日
‘’说明:模仿WINDOWS中注册表的方式,结合XML与ASP技术,给网站添加一个专用的“注册表”类。
‘’网址:http://blog.csdn.net/tonton/archive/2004/08/01/58198.aspx
‘’版权:读者可以把本程序使用于任何用途,如要刊登、转载,请保留以上版权信息!
‘’------------------------------------------------------------------------------------
Const NODE_ELEMENT = 1
Const NODE_TEXT = 3
Class RegistryObject
Private mDom
Public Path ‘’注册表路径
Public Encoding ‘’注册表编码
Public DefaultValue ‘’在读取键值时,如果子键不存在而返回的默认值
Private Sub Class_Initialize()
DefaultValue = Empty
Encoding = "gb2312"
Set mDom = Nothing
End Sub
Private Sub Class_Terminate()
Set mDom = Nothing
End Sub
Public Function NewDom()
Set NewDom = Server.CreateObject("Microsoft.XMLDOM")
End Function
Private Property Get Dom()
Dim Nde
If mDom Is Nothing Then
Set mDom = NewDom()
mDom.async = False
mDom.Load Path
If mDom.parseError.errorCode = &H800C0006 Then ‘’文件未找到
Initial
ElseIf mDom.parseError <> 0 Then
Exit Property
End If
End If
Set Dom = mDom
End Property
Public Function Initial()
Dim Nde
Set mDom = NewDom()
With mDom
Set Nde = .createProcessingInstruction("xml", "version=‘’1.0‘’ encoding=‘’" & Encoding & "‘’")
.appendChild (Nde)
Set Nde = .createElement("Registry")
.appendChild (Nde)
End With
mDom.Save Path
End Function
Public Function CreateChannel(Channel)
With Dom
Set CreateChannel = .selectSingleNode("//" & Channel)
If CreateChannel Is Nothing Then
Set CreateChannel = .createNode(NODE_ELEMENT, Channel, "")
.documentElement.appendChild (CreateChannel)
.Save Path
End If
End With
End Function
Public Function GetAllChannels()
Dim Result
Dim Nde, i
With Dom
With .documentElement.childNodes
If .length = 0 Then
Result = Split("", 0)
Else
ReDim Result(.length - 1)
For i = 0 To .length - 1
Result(i) = .Item(i).nodeName
Next
End If
End With
End With
GetAllChannels = Result
End Function
Public Function DeleteChannel(Channel)
Dim Selection
With Dom
Set Selection = .selectNodes("//" & Channel)
Selection.RemoveAll
.Save Path
End With
End Function
Public Function CreateSection(Channel, Section)
Dim Nde
With Dom
Set Nde = .selectSingleNode("//" & Channel & "/" & Section)
If Nde Is Nothing Then
Set Nde = .selectSingleNode("//" & Channel)
If Nde Is Nothing Then
Set Nde = .createNode(NODE_ELEMENT, Channel, "")
.documentElement.appendChild (Nde)
End If
Set CreateSection = .createNode(NODE_ELEMENT, Section, "")
Nde.appendChild (CreateSection)
.Save Path
End If
End With
End Function
Public Function GetAllSections(Channel)
Dim Result
Dim Nde, i
With Dom
Set Nde = .selectSingleNode("//" & Channel)
If Not Nde Is Nothing Then
With Nde.childNodes
If .length = 0 Then
Result = Split("", 0)
Else
ReDim Result(.length - 1)
For i = 0 To .length - 1
Result(i) = .Item(i).nodeName
Next
End If
End With
Else
Result = Split("", 0)
End If
End With
GetAllSections = Result
End Function
Public Function ClearAllSections(Channel)
Dim Selection
With Dom
Set Selection = .selectNodes("//" & Channel)
Selection.RemoveAll
.Save Path
End With
End Function
Public Function DeleteSection(Channel, Section)
Dim Selection
With Dom
Set Selection = .selectNodes("//" & Channel & "/" & Section)
Selection.RemoveAll
.Save Path
End With
End Function
Public Function GetAllKeys(Channel, Section)
Dim Result
Dim Nde, i
With Dom
Set Nde = .selectSingleNode("//" & Channel & "/" & Section)
If Not Nde Is Nothing Then
With Nde.childNodes
If .length = 0 Then
Result = Split("", 0)
Else
ReDim Result(.length - 1)
For i = 0 To .length - 1
Result(i) = .Item(i).nodeName
Next
End If
End With
Else
Result=Split("", 0)
End If
End With
GetAllKeys = Result
End Function
Public Sub SaveValue(Channel, Section, Key, Value)
Dim Nde, Nde2, ItemNode
With Dom
Set ItemNode = .selectSingleNode("//" & Channel & "/" & Section & "/" & Key)
If ItemNode Is Nothing Then
Set Nde = .selectSingleNode("//" & Channel)
If Nde Is Nothing Then
Set Nde = .createNode(NODE_ELEMENT, Channel, "")
.documentElement.appendChild (Nde)
End If
Set Nde2 = Nde.selectSingleNode("//" & Section)
If Nde2 Is Nothing Then
Set Nde2 = .createNode(NODE_ELEMENT, Section, "")
Nde.appendChild (Nde2)
End If
Set ItemNode = .createNode(NODE_ELEMENT, Key, "")
Nde2.appendChild (ItemNode)
End If
ItemNode.Text = Value
.Save Path
End With
End Sub
Public Function ReadValue(Channel, Section, Key)
Dim Nde
With Dom
Set Nde = .selectSingleNode("//" & Channel & "/" & Section & "/" & Key)
If Nde Is Nothing Then
ReadValue = DefaultValue
Else
ReadValue = Nde.Text
End If
End With
End Function
Public Function GetAllValues(Channel, Section)
Dim Result
Dim Nde, i
With Dom
Set Nde = .selectSingleNode("//" & Channel & "/" & Section)
If Not Nde Is Nothing Then
With Nde.childNodes
If .length = 0 Then
Result = Split("", 0)
Else
ReDim Result(.length - 1)
For i = 0 To .length - 1
Set Result(i)=New RegistryKey
Result(i).Name=.Item(i).nodeName
Result(i).Value=.Item(i).Text
Next
End If
End With
Else
Result = Split("", 0)
End If
End With
GetAllValues = Result
End Function
End Class
Class RegistryKey
Public Name
Public Value
End Class
%>
下一篇:给网站添加一个注册表 之 “类的设计” >>
相关文章:
- · 演示索引指示器的用法(C#)
- · ASP.NET中的ViewState
- · 蛙蛙学习asp.net总结(之一)
- · ASP.net初体验
- · 在ASP中利用ADO显示Excel文件内容的函数
- · ASP.NET 验证控件安全隐患
- · WindowsDNA与.net
- · 微软的常用资源列表
- · 蛙蛙推荐:asp中的多条件组合查询实现
- · 使用模板实现ASP代码与页面分离
- · 蛙蛙推荐:类中的静态成员和非静态成员(C#版)
- · 有关windows服务的创建,控制
- · 一个自定义的可以分页,排序,扩展显示grid控件
- · 转贴(电脑报):VBA开发实用指南
- · 蛙蛙推荐: 用web服务传递Dataset的一个简单例子
- · ASP中轻松实现变量名-值变换
- · J2EE还是.NET,这是一个问题
- · VML应用
- · Caching in ASP.NET
- · asp论坛在线人数统计研究
- · 为freetextbox1.6.5上传图片加上水印
- · 自定义配置节处理实现个性化web.config
- · 使用xmlhttp为网站增加股市行情查询功能
- · .Net Enterprise服务器可能太早冠上.Net名号了
- · 维护ASP的会话状态
- · 浅谈引用计数
- · 使你的窗体保留在桌面的最上面
- · 研究心得------->Seskin控件包中SeskinEdit汉字问题的解决办法
- · 建立三层结构的ASP应用程序
- · 研究心得------->CPU信息的获得,比较全面的
- · Sender 的??用:所有Edit共用一???^?V格式
- · override deal with window closing in database application
- · C++ 和 Delphi 的函数覆盖(Override)与重载(overload
- · 正确处理ASP动态网页中的容错机制
- · 几例在ASP存储过程的使用方法
- · 实现让每句话的头一个字母都大写
- · 如何尽快释放掉Connection对象建立的连接?
- · Connection对象的应用
