实例演练ASP+XML编程(3)
作者:gwd 来源: * 制作指南 发布时间:2007-10-11 13:53:00
标签:xml,编程,asp,dom
四、操作Xml数据的Cls_Person类说明(clsPerson.asp)
Cls_Person类用来完成与联系人信息相关的各种操作,包括添加、修改和删除等等,它使用VBScript编写。Cls_Person包括Id、Name、Nick、Mobile、Tel、Email、QQ和Company属性,对应于XML文件中的Person节点。Cls_Person包括GetInfoFromXml、AddToXml、EditToXml和DeleteFormXml四个主要方法,分别完成获取信息,添加信息,修改信息和删除信息四个功能。
Cls_Person的具体实现如下,
’***************************************************
’ 说明:Person类
’ 作者:gwd 2002-11-06
’ 引用:pub/constpub.asp
’***************************************************
Class Cls_Person
Private m_intId ’ Id,对应Person节点在Persons集合中的位置
Private m_strName ’ 姓名
Private m_strNick ’ 英文名
Private m_strMobile ’ 手机
Private m_strTel ’ 电话
Private m_strEmail ’ 电子邮件
Private m_strQQ ’ QQ号
Private m_strCompany ’ 所在公司
Private m_strError ’ 出错信息
’ 类初始化
Private Sub Class_Initialize()
m_strError = ""
m_intId = -1
End Sub
’ 类释放
Private Sub Class_Terminate()
m_strError = ""
End Sub
’-----读写各个属性---------------------------
Public Property Get Id
Id = m_intId
End Property
Public Property Let Id(intId)
m_intId = intId
End Property
Public Property Get Name
Name = m_strName
End Property
Public Property Let Name(strName)
m_strName = strName
End Property
Public Property Get Nick
Nick = m_strNick
End Property
Public Property Let Nick(strNick)
m_strNick = strNick
End Property
Public Property Get Mobile
Mobile = m_strMobile
End Property
Public Property Let Mobile(strMobile)
m_strMobile = strMobile
End Property
Public Property Get Tel
Tel = m_strTel
End Property
Public Property Let Tel(strTel)
m_strTel = strTel
End Property
Public Property Get Email
Email = m_strEmail
End Property
Public Property Let Email(strEmail)
m_strEmail = strEmail
End Property
Public Property Get QQ
QQ = m_strQQ
End Property
Public Property Let QQ(strQQ)
m_strQQ = strQQ
End Property
Public Property Get Company
Company = m_strCompany
End Property
Public Property Let Company(strCompany)
m_strCompany = strCompany
End Property
’-----------------------------------------------
’ 获取错误信息
Public Function GetLastError()
GetLastError = m_strError
End Function
’ 私有方法,添加错误信息
Private Sub AddErr(strEcho)
m_strError = m_strError + "<Div CLASS=""alert"">" & strEcho & "</Div>"
End Sub
’ 清除错误信息
Public Function ClearError()
m_strError = ""
End Function
’ 从Xml中读取指定节点的数据,并填充各个属性
’ 需要首先设置Id
Public Function GetInfoFromXml(objXmlDoc)
Dim objNodeList
Dim I
ClearError
If objXmlDoc Is Nothing Then
GetInfoFromXml = False
AddErr "Dom对象为空值"
Exit Function
End If
If CStr(m_intId) = "-1" Then
GetInfoFromXml = False
AddErr "未正确设置联系人对象的ID属性"
Exit Function
Else
I = m_intId - 1 ’ 要读取得节点位置
End If
’ 选择并读取节点信息,赋予各个属性
Set objNodeList = objXmlDoc.getElementsByTagName("Person")
If objNodeList.length - m_intId >= 0 Then
On Error Resume Next
m_strName = objNodeList(I).selectSingleNode("Name").Text
m_strNick = objNodeList(I).selectSingleNode("Nick").Text
m_strMobile = objNodeList(I).selectSingleNode("Mobile").Text
m_strTel = objNodeList(I).selectSingleNode("Tel").Text
m_strEmail = objNodeList(I).selectSingleNode("Email").Text
m_strQQ = objNodeList(I).selectSingleNode("QQ").Text
m_strCompany = objNodeList(I).selectSingleNode("Company").Text
GetInfoFromXml = True
Else
GetInfoFromXml = False
AddErr "获取联系信息发生错误"
Set objNodeList = Nothing
Exit Function
End If
Set objNodeList = Nothing
End Function
’ 添加信息到XML文件中
’ 需要首先设置好要填充的属性
Public Function AddToXml(objXmlDoc)
Dim objPerson, objNode
ClearError
If objXmlDoc Is Nothing Then
AddToXml = False
AddErr "Dom对象为空值"
Exit Function
End If
’ 创建Person节点
Set objPerson = objXmlDoc.createElement("Person")
objXmlDoc.documentElement.appendChild objPerson
’ 创建各个子节点
’-----------------------------------------------------
Set objNode = objXmlDoc.createElement("Name")
objNode.Text = m_strName
objPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Nick")
objNode.Text = m_strNick
objPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Mobile")
objNode.Text = m_strMobile
objPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Tel")
objNode.Text = m_strTel
objPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Email")
objNode.Text = m_strEmail
objPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("QQ")
objNode.Text = m_strQQ
objPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Company")
objNode.Text = m_strCompany
objPerson.appendChild objNode
’-----------------------------------------------------
Set objNode = Nothing
Set objPerson = Nothing
On Error Resume Next
objXmlDoc.save Server.MapPath(C_XMLFILE) ’保存XML文件
If Err.Number = 0 Then
AddToXml = True
Else
AddToXml = False
AddErr Err.Description
End If
End Function
’ 从XML文件中删除数据
’ 需要首先设置Id
Public Function DeleteFromXml(objXmlDoc)
Dim objNodeList, objNode
ClearError
If objXmlDoc Is Nothing Then
DeleteFromXml = False
AddErr "Dom对象为空值"
Exit Function
End If
If CStr(m_intId) = "-1" Then
DeleteFromXml = False
AddErr "未正确设置联系人对象的ID属性"
Exit Function
End If
Set objNodeList = objXmlDoc.getElementsByTagName("Person")
If objNodeList.length - m_intId < 0 Then
DeleteFromXml = False
AddErr "未找到相应的联系人"
Set objNodeList = Nothing
Exit Function
End If
On Error Resume Next
Set objNode = objXmlDoc.documentElement.removeChild(objNodeList(intId-1))
If objNode Is Nothing Then
DeleteFromXml = False
AddErr "删除联系人失败"
Set objNodeList = Nothing
Exit Function
Else
objXmlDoc.save Server.MapPath(C_XMLFILE)
End If
Set objNode = Nothing
Set objNodeList = Nothing
If Err.Number = 0 Then
DeleteFromXml = True
Else
DeleteFromXml = False
AddErr Err.Description
End If
End Function
’ 修改XML文件中的数据
’ 需要首先设置好Id
Public Function EditToXml(objXmlDoc)
Dim objPersonList, objOldPerson, objNewPerson, objNode
ClearError
If objXmlDoc Is Nothing Then
EditToXml = False
AddErr "Dom对象为空值"
Exit Function
End If
If CStr(m_intId) = "-1" Then
EditToXml = False
AddErr "未正确设置联系人对象的ID属性"
Exit Function
End If
Set objPersonList = objXmlDoc.getElementsByTagName("Person")
If objPersonList.length - m_intId < 0 Then
DeleteFromXml = False
AddErr "未找到相应的联系人"
Set objPersonList = Nothing
Exit Function
End If
Set objOldPerson = objPersonList(m_intId-1) ’ 要修改的旧节点
Set objNewPerson = objXmlDoc.createElement("Person") ’ 用来替换旧节点的新节点
Set objNode = objXmlDoc.createElement("Name")
objNode.Text = m_strName
objNewPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Nick")
objNode.Text = m_strNick
objNewPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Mobile")
objNode.Text = m_strMobile
objNewPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Tel")
objNode.Text = m_strTel
objNewPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Email")
objNode.Text = m_strEmail
objNewPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("QQ")
objNode.Text = m_strQQ
objNewPerson.appendChild objNode
Set objNode = objXmlDoc.createElement("Company")
objNode.Text = m_strCompany
objNewPerson.appendChild objNode
On Error Resume Next
’ 进行替换
Set objNode = objXmlDoc.documentElement.replaceChild(objNewPerson, objOldPerson)
If objNode Is Nothing Then
EditToXml = False
AddErr "修改联系人失败"
Set objOldPerosn = Nothing
Set objNewPerson = Nothing
Set objPersonList = Nothing
Exit Function
Else
objXmlDoc.save Server.MapPath(C_XMLFILE)
End If
Set objOldPerson = Nothing
Set objNewPerson = Nothing
Set objPersonList = Nothing
If Err.Number = 0 Then
EditToXml = True
Else
EditToXml = False
AddErr Err.Description
End If
End Function
End Class
0
投稿
猜你喜欢
- 作用:用ASP程序将页面中的电话号码生成图片格式。以下是引用片段:<% Call Com_CreatValidCode(Request
- 内容摘要:最近逛论坛经常看到有朋友问上传文件怎么重命名,怎么以当前日期来重命名上传文件。现在我就介绍一下重命名的方法,希望对大家有所帮助。本
- <%'============================================================
- 在表中有两个字段:id_no (varchar) , in_date (datetime) ,把in_date相同的记录的in_date依次
- 今天看YUI的视频教程,YUI的工程师介绍的一款在线的图片压缩工具,也许你用过,也许没有,不过我这里强烈推荐大家用一下,我用smush.it
- 【先锋缓存类】Ver2004作者:孙立宇、apollosun、ezhonghua官方网站:http://www.lkstar.com 技术支
- 今天在看罗素的《西方哲学史》时,忽然想到了这个想法,我认为可以从另外一个角度来看“用户体验“的影响因素。上面这个图是我今天思考的一部分,这是
- IP字段截取,判断访问者ip,根据ip来显示不同图片,很简单的程序<%ip=request.servervariables("
- Balloons(气球状提示)问题摘要气球状提示(Balloon)是一个小型的弹出窗口,用于通知用户出现非关键性问题或控件处于某种特殊情况。
- 在第一部分和第二部分中我们分别介绍了改善网站性能中页面内容和服务器的几条守则,除此之外,JavaScript和CSS也是我们页
- 内容摘要:Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行
- 有这么一个题目,说bt其实也不bt,为了重点突出其中的意图,特意加上了括号:var a = (++Math.P
- 上次我重新修改了UBB的转换后,又很多朋友反映日文显示的时候出错了。我在本地测试了一下,结果出现了 Invalid procedure ca
- 问题:在论坛发表回复时出现“The table is full”的提示,字面意义上是数据表已满的意思。因为很少有开发者遭遇单一表超过4G的情
- 优化糟糕设计的表结果或者索引能很大程度改进mysql的性能。 如果需要高性能, 那么就需要根据不同的操作需求精心设计表结构和索引, 这当然需
- 当你使用Lumigent log Explorer连接服务器后,选择具体的数据库实例时报错,提示 &nbs
- 锚点是“top”,可以放在页面的任何位置,一般是页首。程序就是对锚点出现的判断,我设置的数值是4,意思是出现4个动态数据就出现一个锚点,少于
- 还是决定冠上ajax的头衔,毕竟很多人会用这个关键词搜索。虽然我认为这只是个炒作的概念,不过不得不承认ajax叫起来要方便多了。ajax的意
- 在url网址中,我们经常使用server.urlencode来对网址进行编码,特别是遇到网址中有中文字符的时候,如<a href=&q
- Rs.GetRows(N):N代表获取记录数量 Rs.GetRows(1):1表示只返回一行记录 Rs.GetRows(-1):-1表示默认