i have this code
Dim htmldoc As HtmlDocument = New HtmlDocument()
htmldoc.LoadHtml(strPageContent)
Dim root As HtmlNode = htmldoc.DocumentNode
For Each link As HtmlNode In root.SelectNodes("//a")
If link.HasAttributes("href") Then doSomething() 'this doesn't work because hasAttributes only checks whether an element has attributes or not
Next
but am getting an error Object reference not set to an instance of an object.
the document contains at least one anchor-tag? how do i check if an attribute exits?
i tried this if link.HasAttributes("title") then
and get another error
Public ReadOnly Property HasAttributes() As Boolean' has no parameters and its return type cannot be indexed.
If HtmlAgilityPack supports this XPATH selector, you can replace //a
with //a[@href]
For Each link as HtmlNode In root.SelectNodes("//a[@href]")
doSomething()
Next
Otherwise, you can use the Attributes
property:
For Each link as HtmlNode In root.SelectNodes("//a")
If link.Attributes.Any(Function(a) a.Name = "href") Then doSomething()
Next
Dim htmldoc As HtmlDocument = New HtmlDocument()
htmldoc.LoadHtml(strPageContent)
Dim root As HtmlNode = htmldoc.DocumentNode
var nodes = root.SelectNodes("//a[@href and @title]")
if (nodes <> Null) Then
For Each link As HtmlNode In nodes
If link.HasAttributes("href") Then doSomething() 'this doesn't work because hasAttributes only checks whether an element has attributes or not
Next
end if
Also, you can check for attributes:
link.Attributes["title"] if null, then doesnt have attribute.
Same link.Attributes["href"] and etc.
Property link.HasAttributes shows only that tag has any attribute, it is bool value.