|
Imports System.Xml
Imports System
Imports System.Net
Imports System.Text
Imports System.IO
Public Enum RSSVersion
version_Unknown = 0
version_0_91 = 1
version_0_92 = 2
version_2_00 = 3
End Enum
Public Structure RSSItem
Dim Title As String
Dim Description As String
Dim pubDate As DateTime
Dim Link As Uri
End Structure
Public Structure RSSHeader
Dim Title As String
Dim Link As Uri
Dim Description As String
Dim Language As String
Dim Copyright As String
Dim managingEditor As String
Dim webMaster As String
Dim lastBuildDate As DateTime
End Structure
Public Class RSSItemCollection
Inherits CollectionBase
Default Public Property Item(ByVal index As Integer) As RSSItem
Get
Return List(index)
End Get
Set(ByVal Value As RSSItem)
List(index) = Value
End Set
End Property
Public Function Add(ByVal value As RSSItem) As Integer
Return List.Add(value)
End Function
Public Function IndexOf(ByVal value As RSSItem) As Integer
Return List.IndexOf(value)
End Function
Public Sub Insert(ByVal index As Integer, ByVal value As RSSItem)
List.Insert(index, value)
End Sub
Public Sub Remove(ByVal value As RSSItem)
List.Remove(value)
End Sub
Public Function Contains(ByVal value As RSSItem) As Boolean
Return List.Contains(value)
End Function
End Class
Public Class csRSSFeed
Inherits csXMLParser
Property Version() As RSSVersion
Get
Return Me.myRSSVersion
End Get
Set(ByVal value As RSSVersion)
Me.myRSSVersion = value
End Set
End Property
Property Item(ByVal index As Integer) As RSSItem
Get
Return Me.myRSSItems(index)
End Get
Set(ByVal Value As RSSItem)
Me.myRSSItems(index) = Value
End Set
End Property
Property Items() As RSSItemCollection
Get
Return Me.myRSSItems
End Get
Set(ByVal Value As RSSItemCollection)
Me.myRSSItems = Value
End Set
End Property
Property Header() As RSSHeader
Get
Return Me.myRSSHeader
End Get
Set(ByVal Value As RSSHeader)
Me.myRSSHeader = Value
End Set
End Property
Private myRSSVersion As RSSVersion
Private myRSSItems As New RSSItemCollection
Private myRSSHeader As RSSHeader
Private Function getRSSVersion() As RSSVersion
Dim myrootNode As XmlNode
Dim versionAttribute As XmlAttribute
Dim myRSSVersion As RSSVersion
myRSSVersion = RSSVersion.version_Unknown
myrootNode = fetchNode(Document.ChildNodes, "rss")
versionAttribute = fetchAttribute(myrootNode, "version")
Select Case versionAttribute.Value
Case "0.91"
myRSSVersion = RSSVersion.version_0_91
Case "0.92"
myRSSVersion = RSSVersion.version_0_92
Case "2.00"
myRSSVersion = RSSVersion.version_2_00
End Select
Return myRSSVersion
End Function
Private Sub PopulateMembers()
Dim myNode As XmlNode
Dim myItemNode As XmlNode
Dim i As Integer
Me.myRSSHeader.Copyright = ""
Me.myRSSHeader.Description = ""
Me.myRSSHeader.Language = ""
Me.myRSSHeader.Title = ""
Me.myRSSHeader.webMaster = ""
Me.myRSSHeader.managingEditor = ""
Me.myRSSHeader.lastBuildDate = Nothing
Mybase.DocumentRoot = Me.fetchNode(Document.ChildNodes, "rss")
Mybase.DocumentRoot = Me.fetchNode(Mybase.DocumentRoot.ChildNodes, "channel")
Me.myRSSVersion = Me.getRSSVersion
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "title")
If Not IsNothing(myNode) Then Me.myRSSHeader.Title = myNode.InnerText
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "link")
If Not IsNothing(myNode) Then Me.myRSSHeader.Link = New Uri(myNode.InnerText)
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "description")
If Not IsNothing(myNode) Then Me.myRSSHeader.Description = myNode.InnerText
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "language")
If Not IsNothing(myNode) Then Me.myRSSHeader.Language = myNode.InnerText
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "copyright")
If Not IsNothing(myNode) Then Me.myRSSHeader.Copyright = myNode.InnerText
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "managingEditor")
If Not IsNothing(myNode) Then Me.myRSSHeader.managingEditor = myNode.InnerText
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "webMaster")
If Not IsNothing(myNode) Then Me.myRSSHeader.webMaster = myNode.InnerText
myNode = fetchNode(Mybase.DocumentRoot.ChildNodes, "lastBuildDate")
If Not IsNothing(myNode) Then
Me.myRSSHeader.lastBuildDate = DateTime.Parse(myNode.InnerText)
End If
Me.myRSSItems.Clear()
For i = 0 To Mybase.DocumentRoot.ChildNodes.Count - 1
If Mybase.DocumentRoot.ChildNodes(i).Name = "item" Then
myItemNode = Mybase.DocumentRoot.ChildNodes(i)
Dim myItem As RSSItem
myItem.pubDate = Nothing
myNode = fetchNode(myItemNode.ChildNodes, "description")
If Not IsNothing(myNode) Then myItem.Description = myNode.InnerText
myNode = fetchNode(myItemNode.ChildNodes, "title")
If Not IsNothing(myNode) Then myItem.Title = myNode.InnerText
myNode = fetchNode(myItemNode.ChildNodes, "link")
If Not IsNothing(myNode) Then myItem.Link = New Uri(myNode.InnerText)
myNode = fetchNode(myItemNode.ChildNodes, "pubDate")
If Not IsNothing(myNode) Then myItem.pubDate = DateTime.Parse(myNode.InnerText)
Select Case Me.myRSSVersion
Case RSSVersion.version_0_91
Case RSSVersion.version_0_92
Case RSSVersion.version_2_00
End Select
Me.myRSSItems.Add(myItem)
End If
Next
End Sub
Public Sub New()
Me.myRSSVersion = RSSVersion.version_Unknown
End Sub
Public Sub Load(ByVal filename As String)
MyBase.LoadFromFile(filename)
PopulateMembers()
End Sub
Public Sub LoadFromHttp(ByVal Url As String)
MyBase.LoadFromUrl(Url)
PopulateMembers()
End Sub
End Class
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Ive came to the conclusion recently Job Titles exist merely to massage the ego. Everybody in my workplace is a manager of something (sometimes they manage themselves solely) I Prefer to be judged not on my job title but my ability to do a good job of what I am supposed to do.