Классический ASP парсер RSS и Wordpress Feed совместимость
Я предрежу этот вопрос тем фактом, что я веб-дизайнер, и я пытаюсь найти способ исправить этот классический код синтаксического анализатора ASP RSS, который мы используем здесь, на работе, поэтому любая основная идея, которую вы можете предложить, будет оценили.
Я столкнулся с дорожным блоком с этим кодом. Он анализирует RSS-канал, но, как правило, только те каналы, которые используют настройки совместимости с FeedFurner SmartFeed. Что мне нужно сделать, так это уметь анализировать обычную jane Wordpress ленту, что она, похоже, изо всех сил пытается сделать. Моя цель здесь состоит в том, чтобы добавить дополнительную совместимость, чтобы этот код не был настолько привередливым, когда дело доходит до разбора фидов.
Когда я вставляю прямую ленту WP, она поднимает ошибку неверной подачи и возвращает код ошибки -2146697211, который при поиске кода, по-видимому, подразумевает, что канал не может быть найден. Я попытался изменить Server.CreateObject("MSXML2.DomDocument.3.0") на Server.CreateObject ("MSXML2.DomDocument.4.0"), но похоже, что наш сервер не поддерживает 4.0. Хотя это может быть что-то, что может быть улучшено, время разработки здесь для этой проблемы довольно маловероятно. Поэтому я пытаюсь заставить его работать с использованием текущей настройки IIS, если это возможно.
У кого-нибудь есть какие-нибудь идеи относительно каких-либо настроек, которые можно было бы сделать, чтобы это работало? Благодарю.
<%
SUB DisplayRSSFeed(URLToRSS, MaxNumberOfItems)
Set fs=Server.CreateObject("Scripting.FileSystemObject")
IF fs.FileExists(Server.MapPath(TemplatePath & "rss_template.asp")) THEN
Set f=fs.OpenTextFile(Server.MapPath(TemplatePath & "rss_template.asp"), 1)
itemTemplate = f.ReadAll
f.Close
Set f=Nothing
ELSE
' =========== configuration =====================
' Item template.
' {LINK} will be replaced with item link
' {TITLE} will be replaced with item title
' {DESCRIPTION} will be replaced with item description
'ItemTemplate = "<tr><td><a target='_blank' href=" & """{LINK}""" & ">{TITLE}</a><BR>{DESCRIPTION}</td></tr>"
ItemTemplate = ""
ItemTemplate = ItemTemplate & "<div class=""sp_blogPost"">"
ItemTemplate = ItemTemplate & " <h2><a href=""{LINK}"" target=""_blank"">{TITLE}</a></h2>"
ItemTemplate = ItemTemplate & " <h5>Posted on {DATE}</h5>"
ItemTemplate = ItemTemplate & " <p>"
ItemTemplate = ItemTemplate & " {DESCRIPTION}"
ItemTemplate = ItemTemplate & " </p>"
ItemTemplate = ItemTemplate & " <a href=""{LINK}"" target=""_blank"">Continue Reading Article</a>"
ItemTemplate = ItemTemplate & "</div>"
ItemTemplate = ItemTemplate & "<div class=""sp_blogDivider""></div>"
' ================================================
END IF
On Error Resume Next
Set xmlHttp = Server.CreateObject("MSXML2.XMLHTTP")
xmlHttp.Open "Get", URLToRSS, false
IF Err.number <> 0 then
Response.Write "The URL is not valid"
Exit Sub
END IF
xmlHttp.Send()
RSSXML = xmlHttp.ResponseText
Set xmlDOM = Server.CreateObject("MSXML2.DomDocument.3.0")
xmlDOM.async = false
xmlDOM.LoadXml(RSSXML)
IF Err.number <> 0 then
Response.Write "The RSS Data is not valid"
Response.Write Err.number
Exit Sub
END IF
Set RSSItems = xmlDOM.getElementsByTagName("item") ' collect all "items" from downloaded RSS
j = -1
FOR EACH RSSItem IN RSSItems
FOR EACH child IN RSSItem.childNodes
Select case lcase(child.nodeName)
case "title"
RSStitle = child.text
case "enclosure"
RSSimage = child.getAttribute("url")
'' case "link"
'' RSSlink = child.text
case "guid"
RSSlink = child.text
case "description"
RSSdescription = child.text
Set re = New RegExp
re.Pattern = "<[^>]+>"
re.IgnoreCase = true
re.Global = true
RSSdescription = re.Replace(RSSdescription, "")
set re = nothing
if len(RSSdescription) > 300 then RSSdescription = mid(RSSdescription, 1, 300) & "..."
case "pubdate"
RSSdate = child.text
RSSdate = split(RSSDate, "T")(0)
arrDate = split(RSSDate, "-")
if ubound(arrDate) = 2 then
RSSdate = arrDate(1) & "." & arrDate(2) & "." & arrDate(0)
else
RSSdate = Replace(RSSdate, "-", ".")
end if
END SELECT
NEXT
j = J+1
IF J < CInt(MaxNumberOfItems) THEN
Itemcontent = ItemTemplate
Itemcontent = Replace(Itemcontent,"{DATE}", RSSdate)
Itemcontent = Replace(Itemcontent,"{IMAGE}", RSSimage)
ItemContent = Replace(ItemContent,"{LINK}",RSSlink)
ItemContent = Replace(ItemContent,"{TITLE}",RSSTitle)
ItemContent = Replace(ItemContent,"{DESCRIPTION}",RSSDescription)
Response.Write ItemContent
ItemContent = ""
END IF
NEXT
'Response.Write "</table>"
On Error GoTo 0
END SUB
%>