Можно сделать со счетчиком в цикле for, но я бы хотел использовать XPath .Установите язык выбора на XPath .
objXML.SetProperty "ServerHTTPRequest", True
objXML.SetProperty "SelectionLanguage", "XPath"
. Выберите элементы с помощью
objXML.selectNodes("//item[position() <= 4]")
вместо
objRoot.getElementsByTagName("item")
Затем первые четыре будутотображаться. Предложение о If IsObject(objItems) ... etc
: Такие методы, как getElementsByTagName , selectNodes , возвращают коллекцию элементов, которые имеют указанное имя / выражение.Если ни одно из узлов не соответствует имени / выражению, возвращает пустой список / коллекцию, и это не приводит к ошибке при попытке выполнить итерацию по умолчанию ( For Each ).Но некоторые методы выбора возвращают только объект узла ( selectSingleNode , getNamedItem ).Если не найдено ни одного узла, возвращается Nothing
.Проблема в том, что Nothing
тоже объект.Поэтому IsObject(Nothing)
возвращает всегда true.В таких случаях вы можете обращаться следующим образом.
'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