2

到目前为止我所拥有的

我正在为我的网站创建一个新闻提要,我目前有这个。

<%
TheFeed = "http://feeds.feedburner.com/Actsoft"

Set objXML = Server.CreateObject("Microsoft.XMLDOM")

objXML.Async = False
objXML.SetProperty "ServerHTTPRequest", True
objXML.ResolveExternals = True
objXML.ValidateOnParse = True
objXML.Load(TheFeed)

CellCount = 0

If (objXML.parseError.errorCode = 0) Then
   Set objRoot = objXML.documentElement
   If IsObject(objRoot) = False Then
       Response.Write "There was an error retrieving the news feed"
   Else
       Set objItems = objRoot.getElementsByTagName("item")
          If IsObject(objItems) = True Then
              For Each objItem in objItems
                  On Error Resume Next
                  TheTitle =  objItem.selectSingleNode("title").Text
                  TheLink =  objItem.selectSingleNode("link").Text

                  Response.Write "<div class='article'>" &_
                                 "<a href=" & TheLink & ">" & _
                                 "<span>" & TheTitle & "</span>" & _
                                 "</a>" & _
                                 "</div>"
             Next
         End If
     Set objItems = Nothing
   End If
Else
    Response.Write "There was an error retrieving the news feed"
End If
Set objXML = Nothing
%>

我需要什么

我想限制阅读器中显示的对象数量。现在每篇文章都在显示,我想限制只显示前 4 篇。

我是Asp 的新手,所以我不知道该怎么做。

4

1 回答 1

3

可以在 for 循环中使用计数器来完成,但我想使用XPath

将选择语言设置为XPath

objXML.SetProperty "ServerHTTPRequest", True
objXML.SetProperty "SelectionLanguage", "XPath"

选择元素

objXML.selectNodes("//item[position() <= 4]")

反而

objRoot.getElementsByTagName("item")

然后,将显示前四个。

关于的建议 If IsObject(objItems) ... etc getElementsByTagNameselectNodes

等方法返回具有指定名称/表达式的元素集合。如果没有节点匹配名称/表达式,则返回一个空列表/集合,并且当您尝试本机迭代它时不会导致错误(For Each)。 但是,一些选择方法只返回一个节点对象(selectSingleNodegetNamedItem)。如果没有节点匹配,则返回。问题是,它也是一个对象。因此返回始终为真。在这种情况下,您可以按以下方式处理。

NothingNothingIsObject(Nothing)

'On Error Resume Next
Set TheTitle = objItem.selectSingleNode("title")
Set TheLink = objItem.selectSingleNode("link")

If TheTitle Is Nothing Then TheTitle = "" Else TheTitle = TheTitle.Text
If TheLink Is Nothing Then TheLink = "" Else TheLink = TheLink.Text
于 2012-01-25T09:33:06.117 回答