123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <%
- Class XmlManage
- ' xml 对象实例
- Public xmlDoc
-
- '*************************************************
- ' 类的初始化
- Private Sub Class_Initialize
- set xmlDoc = Server.CreateObject("Msxml2.DOMDocument")
- xmlDoc.async = False
- End Sub
-
- '*************************************************
- ' 类的析构
- Private Sub Class_Terminate
- Set xmlDoc = Nothing
- End Sub
-
- '*************************************************
- ' 加载XML
- ' oLoad :
- ' iType : 要加载的类型.
- ' 0,说明oLoad为空,从Request中读取数据;
- ' 1,说明oLoad为字符串,直接做为XML格式字符串读取即可;
- ' 2,说明oLoad为XML文件路径,需要得到绝对路径后读取;
- ' 3,说明oLoad为空,由本程序构造默认的XML格式;
- Public Function LoadXml(ByVal oLoad, ByVal iType)
- dim bResult
- bResult = False
- Select Case iType
- Case 0
- ' 从Request中读取数据
- xmlDoc.load(Request)
- Case 1
- ' 直接做为XML格式字符串读取
- xmlDoc.loadXML(oLoad)
- Case 2
- ' 得到绝对路径后读取
- xmlDoc.load(GetAbsolutePath(oLoad))
- Case Else
- ' oLoad为空,由本程序构造默认的XML格式
- dim sXml
- sXml = ""
- sXml = sXml & "<FeedbackInfo>"
- sXml = sXml & "<SubList></SubList>"
- sXml = sXml & "</FeedbackInfo>"
- xmlDoc.loadXML(sXml)
- End Select
- bResult = True
- LoadXml = bResult
- End Function
-
- '*************************************************
- ' 设置xmlDoc中节点的值(没有重名节点的情况)
- Public Function SetSingleNodeText(ByVal sNodeName, ByVal sNodeText)
- dim bResult
- bResult = False
- xmlDoc.selectSingleNode(ReturnSelectName(sNodeName)).text = sNodeText
- bResult = True
- SetSingleNodeText = bResult
- End Function
-
- '*************************************************
- ' 设置xmlDoc中节点的值(同名节点有多个的情况)
- Public Function SetNodeTextInNodes(ByVal sNodeName, ByVal sNodeText, ByVal iIndex)
- dim bResult
- bResult = False
- dim nNodeList
- set nNodeList = xmlDoc.selectNodes(ReturnSelectName(sNodeName))
- if iIndex >= 0 and iIndex < nNodeList.length then
- nNodeList(iIndex).text = sNodeText
- end if
- set nNodeList = nothing
- bResult = True
- SetNodeTextInNodes = bResult
- End Function
-
- '*************************************************
- ' 返回节点(没有重名节点的情况)
- Public Function GetSingleNode(ByVal sNodeName)
- set GetSingleNode = xmlDoc.selectSingleNode(ReturnSelectName(sNodeName))
- End Function
-
- '*************************************************
- ' 根据索引返回节点(同名节点有多个的情况)
- Public Function GetNodeByIndex(ByVal sNodeName, ByVal iIndex)
- dim nNodeList
- set nNodeList = xmlDoc.selectNodes(ReturnSelectName(sNodeName))
- if iIndex >= 0 and iIndex < nNodeList.length then
- set GetNodeByIndex = nNodeList(iIndex)
- end if
- set nNodeList = nothing
- End Function
-
- '*************************************************
- ' 添加节点
- ' sParentNode : 父节点
- ' sChildNode : 子节点
- ' sNodeText : 节点文本
- Public Function AddNode(ByVal sParentNode,ByVal sChildNode,ByVal sNodeText)
- dim bResult
- bResult = False
-
- set child = xmlDoc.createElement(sChildNode)
- if Len(sNodeText) >= 0 then
- child.text = sNodeText
- end if
- ' 用=""判断比较好,还是用IsNull判断比较好,以后可以测试一下
- if sParentNode = "" then
- xmlDoc.firstChild.appendchild(child)
- else
- xmlDoc.selectSingleNode(ReturnSelectName(sParentNode)).appendchild child
- end if
- set child = nothing
-
- bResult = True
- AddNode = bResult
- End Function
-
- '*************************************************
- ' 添加节点
- ' sParentNode : 父节点
- ' sChildNode : 子节点
- ' sNodeText : 节点文本
- ' iIndex : 节点索引,即,如果名为sParentNode的父节点有多个,则把子节点添加到索引为iIndex的上面
- Public Function AddNodeByIndex(ByVal sParentNode,ByVal sChildNode,ByVal sNodeText, ByVal iIndex)
- dim bResult
- bResult = False
-
- set child = xmlDoc.createElement(sChildNode)
- if Len(sNodeText) >= 0 then
- child.text = sNodeText
- end if
- ' 用=""判断比较好,还是用IsNull判断比较好,以后可以测试一下
- if sParentNode = "" then
- xmlDoc.firstChild.appendchild(child)
- else
- if xmlDoc.selectNodes(ReturnSelectName(sParentNode)).length > 1 then
- if iIndex >= 0 and iIndex < xmlDoc.selectNodes(ReturnSelectName(sParentNode)).length then
- xmlDoc.selectNodes(ReturnSelectName(sParentNode))(iIndex).appendchild child
- else
- xmlDoc.selectSingleNode(ReturnSelectName(sParentNode)).appendchild child
- end if
- else
- xmlDoc.selectSingleNode(ReturnSelectName(sParentNode)).appendchild child
- end if
- end if
- set child = nothing
-
- bResult = True
- AddNodeByIndex = bResult
- End Function
-
- '*************************************************
- ' 返回节点的子节点数
- Public Function GetChildrenNumOfNode(ByVal sParentNode)
- dim iResult
- iResult = 0
- iResult = xmlDoc.selectSingleNode(ReturnSelectName(sParentNode)).childNodes.length
-
- GetChildrenNumOfNode = iResult
- End Function
-
- '*************************************************
- ' 保存成文件
- ' sFileName : 文件名,相对路径
- Public Function SaveAsFile(ByVal sFileName)
- dim bResult
- bResult = False
- xmlDoc.Save(GetAbsolutePath(sFileName))
- bResult = True
- SaveAsFile = bResult
- End Function
-
- '*************************************************
- ' 添加头
- Public Function AddHead()
- dim bResult
- bResult = False
- dim oPI
- Set oPI = xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""")
- xmlDoc.insertBefore oPI,xmlDoc.childNodes(0)
- Set oPI = nothing
-
- bResult = True
- AddHead = bResult
- end Function
-
- '*************************************************
- ' 使用selectSingleNode等方法时,为后面的参数添加//
- Private Function ReturnSelectName(ByVal sNodeName)
- ReturnSelectName = "//" & sNodeName
- End Function
-
- '*************************************************
- ' 得到文件的绝对路径
- Private Function GetAbsolutePath(sFileName)
- GetAbsolutePath = Server.MapPath(sFileName)
- End Function
- End Class
- %>
|