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")

次に、最初の4つが表示されます。

に関する提案 If IsObject(objItems) ... etc getElementsByTagNameselectNodes

などのメソッドは、指定された名前/式を持つ要素のコレクションを返します。名前/式に一致するノードがない場合は、空のリスト/コレクションを返します。ネイティブで反復しようとしてもエラーは発生しません(For Each)。 ただし、一部の選択メソッドはノードオブジェクトのみを返します(selectSingleNodegetNamedItem)。一致するノードがない場合は、を返します。問題は、もオブジェクトであるということです。したがって、常にtrueを返します。このような場合は、以下のように処理できます。

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 に答える