热门文章
 
在 VBScript 中使用
生成目录树结构的类
远程获取类Asp xmlHt
遭遇ASP类的事件设计
asp类方法初探(广告流量统
硬盘文件搜索代码(ASP类)
asp:debug类
ASP中一个字符串处理类
操作xml的类
读取XML的类 XmlRea
 推荐文章
 
异常类Exception
我眼中的ASP新框架
asp类方法初探(广告流量统
硬盘文件搜索代码(ASP类)
远程获取类Asp xmlHt
ASP中一个字符串处理类
Cookie,Session
代替缓存使用的ini类
分页类Pager
生成目录树结构的类
文件操作类
常用的工具类Utility
输入验证类Validator
asp:debug类
参考c#中的ArrayLis
用MVC模型引导你的WEB设
 
你现在的位置:您现在的位置是: 中国ASP>>ASP教程>>asp类
XML information class Version 1.0

来自leadbbs 作者 Xinsoft
<%
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''
''''  xml information Class Version 1.0
''''
''''  Author: Xinsoft [ Xin Yaping ]
''''  Email:  XinsoftATk65.net
''''  Xinsoft , 2005-04-28 Xinsoft DevStudio
''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
%><%

Class xmlInfo

   Public encoding     '' as String
 
   Public NodeCount
   Public NodeArray
 
   Private xmlURL      '' as String
   Private xmlDoc      '' as Msxml2.DOMDocument.4.0
 
   Private ReadyState  '' as Integer
   Private Status      '' as Integer
   Private LoadSuccess '' as Bool
   Private parseError  '' as Integer
 
   Private curSingleNode   '' as Node
   Private curNodeList     '' as Node List
   Private curXpath        '' as XPath


Private Sub Class_Initialize
   xmlURL=""
   encoding="GB2312"
   NodeCount=0
 
   ReadyState=0
   Status=0
   LoadSuccess=False
   parseError=0
 
   Set xmlDoc = CreateObject("Msxml2.DOMDocument.4.0")
End Sub
Private Sub Class_Terminate
   Set xmlDoc = Nothing
 
   If True = IsObject(NodeArray) Then
       Set NodeArray = Nothing
   End If
   If True = IsObject(curSingleNode) Then
       Set curSingleNode = Nothing
   End If
   If True = IsObject(curNodeList) Then
       Set curNodeList = Nothing
   End if
End Sub

Function BytesToBstr(strBody,CodeBase)
       dim objStream
       Set objStream = Server.CreateObject("Adodb.Stream")
       objStream.Type = 1
       objStream.Mode = 3
       objStream.Open
       objStream.Write strBody
       objStream.Position = 0
       objStream.Type = 2
       objStream.Charset = CodeBase
       BytesToBstr = objStream.ReadText
       objStream.Close
       Set objStream = Nothing
End Function

Public Function httpGet()
   
     Dim Cont
     Dim objXMLHttp
   
     Set objXMLHttp=Server.CreateObject("Msxml2.XMLHTTP")
   
     objXMLHttp.open "GET",xmlURL,False
     objXMLHttp.send()
   
     ReadyState = objXMLHttp.readyState
     Status = objXMLHttp.status
   
     If 4=ReadyState And 200=Status Then
           Cont=objXMLHttp.responseBody
     Else
           Cont=""
     End If
   
     Set objXMLHttp=Nothing
   
     Cont=BytesToBstr(Cont,encoding)
   
     httpGet=Cont
End Function

Public Sub PrintParseErrorInfo()
   If parseError = 1 Then
       
       Response.Write "<P>Some error found in your xml document.</P>"
       
       Dim xPE
       Set xPE = xmlDoc.parseError
       
       Response.Write "<p>xmlDoc.parseError.reason = "& xPE.reason &"</p>"
       Response.Write "<p>xmlDoc.parseError.filepos = "& xPE.filepos &"</p>"
       Response.Write "<p>xmlDoc.parseError.line = "& xPE.line &"</p>"
       Response.Write "<p>xmlDoc.parseError.linepos = "& xPE.linepos &"</p>"
       Response.Write "<p>xmlDoc.parseError.srcText = "& xPE.srcText &"</p>"
       Response.Write "<p>xmlDoc.parseError.URL = "& xPE.URL &"</p>"
       
       Set xPE = Nothing
       
   Else
       Response.Write("")
   End if
End Sub

Property Let url( xmlSourceHttp )

   Dim Cont
 
   xmlURL=xmlSourceHttp
 
   xmlDoc.async = False
   xmlDoc.validateOnParse = False
 
   Cont = httpGet()
   LoadSuccess = xmlDoc.LoadXML(Cont)
   ReadyState = xmlDoc.ReadyState
 
   If xmlDoc.parseError.errorCode <> 0 Then
       parseError = 1
   Else
       parseError = 0
   End If
 
   ''//If True = LoadSuccess Then
   ''//End If

End Property

Property Get url()
   url=xmlURL
End Property

Property Let Xpath( path )
   curXpath=path
End Property
Property Get Xpath()
   Xpath=curXpath
End Property

Property Let SingleNode( Xpath )
   curXpath=Xpath
   Set curSingleNode=xmlDoc.documentElement.selectSingleNode( curXpath )
End Property
Property Get SingleNode()
   Set SingleNode=curSingleNode
End Property

Property Let NodeList( Xpath )
   Dim i
 
   curXpath=Xpath
   Set curNodeList=xmlDoc.documentElement.selectNodes( curXpath )
 
   NodeCount=curNodeList.length
   ReDim NodeArray(NodeCount)
   For i=0 To NodeCount-1
       Set NodeArray(i)=curNodeList.item(i)
   Next
 
End Property
Property Get NodeList()
   Set NodeList=curNodeList
End Property

Property Get loadStat()
   loadStat=LoadSuccess
End Property

Public Function getChildNodeValByName( objNode , ChiidNodeName )
   getChildNodeValByName=objNode.selectSingleNode(ChiidNodeName).text
End Function

Property Get ChildValInList( index , ChildName )
   ChildValInList=getChildNodeValByName( NodeArray(index) , ChildName )
End Property

Property Get ChildVal( ChildName )
   ChildVal=getChildNodeValByName( curSingleNode , ChildName )
End Property

Property Get NodeVal( Xpath )
   NodeVal=xmlDoc.documentElement.selectSingleNode( Xpath ).text
End Property

Property Get XpathNodesLength( Xpath )
   XpathNodesLength=xmlDoc.documentElement.selectNodes(Xpath).length
End Property

Property Get NodeValInList( Xpath , index )
   NodeValInList=xmlDoc.documentElement.selectNodes(Xpath).item(index).text
End Property

End Class

%>

XML information Class Version 1.0 调用示范

<% option explicit %>
<!-- #include file="../../lib/xml.asp" -->
<%
Dim Str,i,N

Dim objXML
Set objXML = New xmlInfo

With objXML
   .url="http://210.77.146.223/tech/indexxml.php";
   .encoding="gb2312"
End With

objXML.NodeList="/blogtech/item"
Response.Write "<p>objXML.RecN="&objXML.NodeCount&"</p>" & vbCrLf

For i=0 To objXML.NodeCount-1
   Response.Write "<p>"&objXML.ChildValInList(i,"title")&"</p>" & vbCrLf
Next

Response.Write "<hr />Test SingleNode<hr />" & vbCrLf

objXML.SingleNode="/blogtech"
Response.Write "objXML.ChildVal(""description"")="& objXML.ChildVal("description") &"" & vbCrLf

Response.Write "<hr />Test NodeVal<hr />" & vbCrLf
Response.Write "objXML.NodeVal(""/blogtech/description"")=" & objXML.NodeVal("/blogtech/description") & vbCrLf




Response.Write "<hr />Test XpathNodesLength and NodeValInList<hr />" & vbCrLf

N=objXML.XpathNodesLength("/blogtech/item/link")
Response.Write "<p>objXML.XpathNodesLength(""/blogtech/item/link"")="&N&"</p>"
For i=0 To N-1
   Response.Write "<p>"& objXML.NodeValInList("/blogtech/item/link",i) &"</p>" & vbCrLf
Next

Set objXML = Nothing

%>

相关信息:

生成目录树结构的类
在 VBScript 中使用对象
远程获取类Asp xmlHttp
遭遇ASP类的事件设计
asp类方法初探(广告流量统计系统实践)
硬盘文件搜索代码(ASP类)
asp:debug类
ASP中一个字符串处理类

 

中国ASP技术 ASP.ORG.CN 版权所有 2004-2008