cRss.cls
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:6k
源码类别:

浏览器

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cRss"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  16. '---------------------------------------------------------------------------------------
  17. ' Module    : cRss
  18. ' DateTime  : 2005-8-19 15:05
  19. ' Author    : Lingll
  20. ' Purpose   :
  21. '---------------------------------------------------------------------------------------
  22. Option Explicit
  23. Private Type BookMark
  24.     Title As String
  25.     Url As String
  26.     Description As String
  27.     PubDate As String
  28. End Type
  29.     
  30. Private m_Title$
  31. Private m_Url$
  32. Private m_BMs() As BookMark
  33. Private m_BMsCnt&
  34. Private WithEvents m_XMLDoc As MSXML2.DOMDocument
  35. Attribute m_XMLDoc.VB_VarHelpID = -1
  36. 'To fire this event, use RaiseEvent with the following syntax:
  37. 'RaiseEvent Changed[(arg1, arg2, ... , argn)]
  38. Public Event Changed()
  39. Public Function GetBmUrl(index As Long) As String
  40. If index > 0 And index <= m_BMsCnt Then
  41.     GetBmUrl = m_BMs(index).Url
  42. End If
  43. End Function
  44. Public Function GetBmTitle(index As Long) As String
  45. If index > 0 And index <= m_BMsCnt Then
  46.     GetBmTitle = m_BMs(index).Title
  47. End If
  48. End Function
  49. Public Function GetBmDescription(index As Long) As String
  50. If index > 0 And index <= m_BMsCnt Then
  51.     GetBmDescription = m_BMs(index).Description
  52. End If
  53. End Function
  54. Public Function GetBmPubdate(index As Long) As String
  55. If index > 0 And index <= m_BMsCnt Then
  56.     GetBmPubdate = m_BMs(index).PubDate
  57. End If
  58. End Function
  59. Public Function GetBmCount() As Long
  60. GetBmCount = m_BMsCnt
  61. End Function
  62. Public Property Let Url(ByVal vData As String)
  63. 'used when assigning a value to the property, on the left side of an assignment.
  64. 'Syntax: X.Url = 5
  65.     m_Url = vData
  66. End Property
  67. Public Property Get Url() As String
  68. 'used when retrieving value of a property, on the right side of an assignment.
  69. 'Syntax: Debug.Print X.Url
  70.     Url = m_Url
  71. End Property
  72. Public Property Let Title(ByVal vData As String)
  73. 'used when assigning a value to the property, on the left side of an assignment.
  74. 'Syntax: X.Title = 5
  75.     m_Title = vData
  76. End Property
  77. Public Property Get Title() As String
  78. 'used when retrieving value of a property, on the right side of an assignment.
  79. 'Syntax: Debug.Print X.Title
  80.     Title = m_Title
  81. End Property
  82. Public Sub Save(dest$)
  83. m_XMLDoc.Save dest
  84. End Sub
  85. Public Sub AddItem(vTitle$, vUrl$)
  86. Dim tNode As MSXML2.IXMLDOMNode
  87. Dim tNode2 As MSXML2.IXMLDOMNode
  88. Dim tNode3 As MSXML2.IXMLDOMNode
  89. Dim tcnt&
  90.     Err.Clear
  91.     Set tNode = m_XMLDoc.childNodes.Item(0).childNodes(0)
  92.     If Err.Number = 0 Then
  93.         Set tNode2 = tNode.appendChild(m_XMLDoc.createNode(NODE_ELEMENT, "item", ""))
  94.         Set tNode3 = tNode2.appendChild(m_XMLDoc.createNode(NODE_ELEMENT, "title", ""))
  95.             tNode3.Text = vTitle
  96.         Set tNode3 = tNode2.appendChild(m_XMLDoc.createNode(NODE_ELEMENT, "link", ""))
  97.             tNode3.Text = vUrl
  98.     Else
  99.         Debug.Print "read rss error"
  100.     End If
  101. End Sub
  102. Public Sub RemoveItem(index&)
  103. On Error Resume Next
  104. Dim tNode As MSXML2.IXMLDOMNode
  105. Dim tNodeList As MSXML2.IXMLDOMNodeList
  106. Dim tcnt&
  107.     Err.Clear
  108.     Set tNode = m_XMLDoc.childNodes.Item(0).childNodes(0)
  109.     Set tNodeList = tNode.selectNodes("item")
  110.     
  111.     If Err.Number = 0 Then
  112.         If index >= 0 And index < tNodeList.Length Then
  113.             tNode.removeChild tNodeList.Item(index)
  114.         End If
  115.     Else
  116.         Debug.Print "read rss error"
  117.     End If
  118. End Sub
  119. Public Sub Refresh()
  120. On Error Resume Next
  121. Dim tNode As MSXML2.IXMLDOMNode
  122. Dim tNodeList As MSXML2.IXMLDOMNodeList
  123. Dim tcnt&
  124. If Not m_XMLDoc.documentElement Is Nothing Then
  125.     Err.Clear
  126.     Set tNodeList = m_XMLDoc.selectSingleNode("rss").selectSingleNode("channel").selectNodes("item")
  127.     
  128.     If Err.Number = 0 Then
  129.         m_BMsCnt = tNodeList.Length
  130.         ReDim m_BMs(0 To m_BMsCnt)
  131.         tcnt = 1
  132.         For Each tNode In tNodeList
  133.             m_BMs(tcnt).Title = tNode.selectSingleNode("title").Text
  134.             m_BMs(tcnt).Url = tNode.selectSingleNode("link").Text
  135.             m_BMs(tcnt).Description = ConverHtmlTag(tNode.selectSingleNode("description").Text)
  136.             m_BMs(tcnt).PubDate = tNode.selectSingleNode("pubDate").Text
  137.             
  138.             tcnt = tcnt + 1
  139.         Next tNode
  140.     Else
  141.         Debug.Print "read rss error"
  142.     End If
  143. End If
  144. End Sub
  145. '---------------------------------------------------------------------------------------
  146. ' Procedure : ConverHtmlTag
  147. ' DateTime  : 2005-8-19 15:07
  148. ' Author    : Lingll
  149. ' Purpose   : 转换部分html标记
  150. '---------------------------------------------------------------------------------------
  151. Private Function ConverHtmlTag(vHtml$) As String
  152. Dim tRtn$
  153. tRtn = Replace(vHtml, "&nbsp;", " ")
  154. tRtn = Replace(tRtn, "<br>", vbNewLine)
  155. tRtn = Replace(tRtn, "<br />", vbNewLine)
  156. tRtn = Replace(tRtn, vbNewLine, vbNullString)
  157. ConverHtmlTag = tRtn
  158. End Function
  159. Public Sub ReLoad()
  160. m_XMLDoc.Load m_Url
  161. End Sub
  162. Public Sub CreateBm(ByVal vTitle$)
  163. Dim tNode As MSXML2.IXMLDOMNode
  164. m_BMsCnt = 0
  165. ReDim m_BMs(0 To m_BMsCnt)
  166. 'm_XmlDoc.loadXML ("<rss><channel><title>" & vTitle & "</title></channel></rss>")
  167. Set m_XMLDoc = New MSXML2.DOMDocument
  168. With m_XMLDoc
  169.     Set tNode = .appendChild(.createNode(NODE_ELEMENT, "rss", ""))
  170.     Set tNode = tNode.appendChild(.createNode(NODE_ELEMENT, "channel", ""))
  171.     Set tNode = tNode.appendChild(.createNode(NODE_ELEMENT, "titel", ""))
  172.     tNode.Text = vTitle
  173. End With
  174. End Sub
  175. Private Sub Class_Initialize()
  176. Set m_XMLDoc = New MSXML2.DOMDocument
  177. End Sub
  178. Private Sub m_XmlDoc_onreadystatechange()
  179. On Error Resume Next
  180. If m_XMLDoc.readyState = 4 Then
  181.     Call Refresh
  182.     RaiseEvent Changed
  183. End If
  184. End Sub
  185. '---------------------------------------------------------------------------------------
  186. ' Procedure : GetXml
  187. ' DateTime  : 2005-5-30 18:58
  188. ' Author    : Lingll
  189. ' Purpose   :
  190. '---------------------------------------------------------------------------------------
  191. Public Function GetXml() As String
  192. GetXml = m_XMLDoc.xml
  193. End Function