给网站添加一个注册表 之 “类的实现”
2004-08-01 23:43
537 查看
<%
'------------------------------------------------------------------------------------
'类名: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
%>
'------------------------------------------------------------------------------------
'类名: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
%>
相关文章推荐
- 给网站添加一个注册表 之 “类的应用”
- 给网站添加一个注册表 之 “类的设计”
- 关于tomcat中虚拟主机的设置,以及为同一个网站添加几个域名的方法
- java实现的一个很强大的彩票网站源码WAP版
- 如何快速实现一个基于 Nginx 网站的监控场景
- 最近做了一个类似社交的网站,看到新浪微博右侧有一个网页在线聊天的功能,如何才能实现网页在线聊天功能(新浪微博这种聊天)?
- 一个简单的在线客服的实现(漂浮在网站左侧,随页面滚动
- 一个网站自动化测试程序的设计与实现
- J2ME中,如果要在最后位置添加一个字符,实现的方法
- WIN32汇编语言在窗口添加按钮,点击按钮实现跳转到一个程序或者一个URL。。。
- js实现点击添加一个input节点
- 使用监听器实现一个统计网站在线人数的示例
- 给自己的网站制作一个favicon.ico图标的实现方法
- 给定一个字符串,问是否能通过添加一个字母将其变为回文串。js实现
- (精)1754 另一种方法实现线段树(这个里面没有用到value,但是添加了一个max)
- 新写的一个使用ASP.NET AJAX中的UpdatePanel控件实现GridView的无刷新删除,更新,添加,查询!
- 利用HTML5的一个重要特性 —— DeviceOrientation来实现手机网站上的摇一摇功能
- 如何快速实现一个基于 Nginx 网站的监控场景
- 点击表格的单元格时实现变颜色,通过for循环为每个单元格添加一个onclick事件
- 在网页上添加一个CheckBox控件和一个RadioButton控件,实现CheckBox控件与RadioButton控件中的项目互选,即选中CheckBox中的一项相应的RadioButton中对应的项也选中,反之依然,条件是CheckBox控件不能多选