0

为什么此代码不会返回通用列表中的任何 ID。网页在 div 元素中肯定有 id。如果我断点它,则属性Id中没有 idDocumentNode.SelectNodes并且htmlDoc.DocumentNode.SelectNodes("//div[@id]")不起作用。我正在使用 .NET 2.0 和 HtmlAgilityPack.dll 1.4.0.0。

Imports HtmlAgilityPack

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim listHtmlFound As List(Of String) = New List(Of String)
        Dim webGet As HtmlWeb = New HtmlWeb
        Dim htmlDoc As HtmlDocument = webGet.Load("http://stackoverflow.com/q/11528387/1350308")
        htmlDoc.OptionUseIdAttribute = True
        'Dim s As Object = htmlDoc.DocumentNode.SelectNodes("//div/@id").Count
        For Each div As HtmlNode In htmlDoc.DocumentNode.SelectNodes("//div")
            listHtmlFound.Add(div.Id)
        Next
    End Sub
End Class
4

1 回答 1

1

你不需要这个:

 htmlDoc.DocumentNode.SelectNodes("//div[@id]")

选择<div>具有id属性的所有节点,而不是所有id属性本身?

编辑
如果Idof 的属性HtmlNode不起作用,您始终可以使用该Attributes属性:循环遍历该属性以找到一个Name = "id"并使用它的Value.

于 2012-07-19T13:16:23.957 回答