查找下一个功能

丹龙

我有一个需要帮助的小问题。

我有一个网络浏览器,以及一个从类中查找文本的按钮,下面是下面的代码:

Dim word As String = (WebBrowser1.Document.GetElementsByTagName("P").Cast(Of HtmlElement) _
       .FirstOrDefault(Function(el) el.GetAttribute("className") = "tagline").InnerText)

    Dim lastWord As String = word.Split(" ").Last

    If Not ListBox1.Items.Contains(lastWord) Then
        ListBox1.Items.Add(lastWord)
    End If

该站点具有名称为“ tagline”的多重类,我希望按钮按下后能够获得下一个。我怎样才能做到这一点..?

史蒂夫

您需要具有一个全局变量,该变量保留要检索的“标语”的索引。并将此索引器用作Skip方法的参数,以将其应用于Where而不是FirstOrDefault返回的序列

' Declared at the global level
Dim index as Integer = 0

' At each button press you write
 Dim word As String = WebBrowser1.Document.GetElementsByTagName("P") _ 
   .Cast(Of HtmlElement) _
   .Where(Function(el) el.GetAttribute("className")  = "tagline") _
   .Skip(index) _ 
   .First().InnerText
Dim lastWord As String = word.Split(" ").Last
index = index + 1

因此,在下一个按钮按下时,您跳到第二个元素,然后跳到第三个元素,依此类推。但是,这带来了问题。您应该知道WebBrowser文档中存在多少个元素,以避免请求不存在的元素。因此,也许最好让所有具有“ tagline”属性的元素并将其保留在列表中,以便于检索

' Declared at the global level
Dim index as Integer = 0
Dim elements = new List(Of HtmlElement)()

' After you have loaded the document
elements = WebBrowser1.Document.GetElementsByTagName("P") _ 
           .Cast(Of HtmlElement) _
           .Where(Function(el) _ 
              el.GetAttribute("className")  = "tagline") _
           .ToList()    

而在按钮代码中

if index < elements.Count Then
    Dim word = elements.Skip(index).First().InnerText
    Dim lastWord As String = word.Split(" ").Last
    index = index + 1
End if

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章