服务器之家

服务器之家 > 正文

一个asp版XMLDOM操作类

时间:2019-09-19 11:51     来源/作者:asp代码网
  1. <script language="vbscript" runat="server">  
  2. '============================================================  
  3. '作者:做回自己  
  4. '时间:2005-3-15  
  5. ============================================================  
  6. Class XMLClass  
  7. Private objXml  
  8. Private xmlDoc  
  9. Private xmlPath  
  10. '//============================================================  
  11. '<!--类初始化及注销时的事件-->  
  12. Sub Class_initialize  
  13. Set objXml = Server.CreateObject("MSXML2.DOMDocument")  
  14. objXml.preserveWhiteSpace = true  
  15. objXml.async = false  
  16. End Sub  
  17. Sub Class_Terminate  
  18. Set objXml = Nothing  
  19. End Sub  
  20. '//============================================================  
  21. '<!--建立一个新的XML文档-->  
  22. Public Function CreateNew(sName)  
  23. Set tmpNode = objXml.createElement(sName)  
  24. objXml.appendChild(tmpNode)  
  25. Set CreateNew = tmpNode  
  26. End Function  
  27. '<!--从外部读入XML文档-->  
  28. Public Function OpenXml(sPath)  
  29. OpenXml=False  
  30. sPath=Server.MapPath(sPath)  
  31. 'Response.Write(sPath)  
  32. xmlPath = sPath  
  33. If objXml.load(sPath) Then  
  34. Set xmlDoc = objXml.documentElement  
  35. OpenXml=True  
  36. End If  
  37. End Function  
  38. '<!--从外部读入XML字符串-->  
  39. Public Sub LoadXml(sStr)  
  40. objXml.loadXML(sStr)  
  41. Set xmlDoc = objXml.documentElement  
  42. End Sub  
  43. Public Sub InceptXml(xObj)  
  44. Set objXml = xObj  
  45. Set xmlDoc = xObj.documentElement  
  46. End Sub  
  47. '//============================================================  
  48. '<!--新增一个节点-->  
  49. Public Function AddNode(sNode,rNode)  
  50. ' sNode STRING 节点名称  
  51. ' rNode OBJECT 增加节点的上级节点引用  
  52. '=============================================================  
  53. Dim TmpNode  
  54. Set TmpNode = objXml.createElement(sNode)  
  55. rNode.appendChild TmpNode  
  56. Set AddNode = TmpNode  
  57. End Function  
  58. '<!--新增一个属性-->  
  59. Public Function AddAttribute(sName,sValue,oNode)  
  60. ' sName STRING 属性名称  
  61. ' sValue STRING 属性值  
  62. ' oNode OBJECT 增加属性的对象  
  63. '=============================================================  
  64. oNode.setAttribute sName,sValue  
  65. End Function  
  66. '<!--新增节点内容-->  
  67. Public Function AddText(FStr,cdBool,oNode)  
  68. Dim tmpText  
  69. If cdBool Then  
  70. Set tmpText = objXml.createCDataSection(FStr)  
  71. Else  
  72. Set tmpText = objXml.createTextNode(FStr)  
  73. End If  
  74. oNode.appendChild tmpText  
  75. End Function  
  76. '========================================================================================================  
  77. '<!--取得节点指定属性的值-->  
  78. Public Function GetAtt(aName,oNode)  
  79. ' aName STRING 属性名称  
  80. ' oNode OBJECT 节点引用  
  81. '=============================================================  
  82. dim tmpValue  
  83. tmpValue = oNode.getAttribute(aName)  
  84. GetAtt = tmpValue  
  85. End Function  
  86. '<!--取得节点名称-->  
  87. Public Function GetNodeName(oNode)  
  88. ' oNode OBJECT 节点引用  
  89. GetNodeName = oNode.nodeName  
  90. End Function  
  91. '<!--取得节点内容-->  
  92. Public Function GetNodeText(oNode)  
  93. ' oNode OBJECT 节点引用  
  94. GetNodeText = oNode.childNodes(0).nodeValue  
  95. End Function  
  96. '<!--取得节点类型-->  
  97. Public Function GetNodeType(oNode)  
  98. ' oNode OBJECT 节点引用  
  99. GetNodeType = oNode.nodeValue  
  100. End Function  
  101. '<!--查找节点名相同的所有节点-->  
  102. Public Function FindNodes(sNode)  
  103. Dim tmpNodes  
  104. Set tmpNodes = objXml.getElementsByTagName(sNode)  
  105. Set FindNodes = tmpNodes  
  106. End Function  
  107. '<!--查打一个相同节点-->  
  108. Public Function FindNode(sNode)  
  109. Dim TmpNode  
  110. Set TmpNode=objXml.selectSingleNode(sNode)  
  111. Set FindNode = TmpNode  
  112. End Function  
  113. '<!--删除一个节点-->  
  114. Public Function DelNode(sNode)  
  115. Dim TmpNodes,Nodesss  
  116. Set TmpNodes=objXml.selectSingleNode(sNode)  
  117. Set Nodesss=TmpNodes.parentNode  
  118. Nodesss.removeChild(TmpNodes)  
  119. End Function  
  120. '<!--替换一个节点-->  
  121. Public Function ReplaceNode(sNode,sText,cdBool)  
  122. 'replaceChild  
  123. Dim TmpNodes,tmpText  
  124. Set TmpNodes=objXml.selectSingleNode(sNode)  
  125. 'AddText sText,cdBool,TmpNodes  
  126. If cdBool Then  
  127. Set tmpText = objXml.createCDataSection(sText)  
  128. Else  
  129. Set tmpText = objXml.createTextNode(sText)  
  130. End If  
  131. TmpNodes.replaceChild tmpText,TmpNodes.firstChild  
  132. End Function  
  133.  
  134. Private Function ProcessingInstruction  
  135. '//--创建XML声明  
  136. Dim objPi  
  137. Set objPi = objXML.createProcessingInstruction("xml""version="&chr(34)&"1.0"&chr(34)&" encoding="&chr(34)&"gb2312"&chr(34))  
  138. '//--把xml生命追加到xml文档  
  139. objXML.insertBefore objPi, objXML.childNodes(0)  
  140. End Function  
  141. '//=============================================================================  
  142. '<!--保存XML文档-->  
  143. Public Function SaveXML()  
  144. 'ProcessingInstruction()  
  145. objXml.save(xmlPath)  
  146. End Function  
  147. '<!--另存XML文档-->  
  148. Public Function SaveAsXML(sPath)  
  149. ProcessingInstruction()  
  150. objXml.save(sPath)  
  151. End Function  
  152. '//==================================================================================  
  153. '相关统计  
  154. '<!--取得根节点-->  
  155. Property Get Root  
  156. Set Root = xmlDoc  
  157. End Property  
  158. '<!--取得根节点下子节点数-->  
  159. Property Get Length  
  160. Length = xmlDoc.childNodes.length  
  161. End Property  
  162. '//==================================================================================  
  163. '相关测试  
  164. Property Get TestNode  
  165. TestNode = xmlDoc.childNodes(0).text  
  166. End Property  
  167. End Class  
  168. </script>  
标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部