ottenere <a>tag e attribuire con htmlagilitypack con vb.net</a>

html-agility-pack vb.net

Domanda

ho questo codice

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

ma sto ricevendo un errore Object reference not set to an instance of an object.

il documento contiene almeno un tag di ancoraggio? come faccio a verificare se un attributo esce?

ho provato questo if link.HasAttributes("title") then e ottenere un altro errore

Public ReadOnly Property HasAttributes() As Boolean' has no parameters and its return type cannot be indexed.

Risposta accettata

Se HtmlAgilityPack supporta questo selettore XPATH, puoi sostituire //a con //a[@href]

For Each link as HtmlNode In root.SelectNodes("//a[@href]")
    doSomething()
Next

Altrimenti, puoi usare la proprietà Attributes :

For Each link as HtmlNode In root.SelectNodes("//a[@href]")
    doSomething()
Next

Risposta popolare

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

Inoltre, puoi verificare gli attributi: link.Attributes ["title"] se null, quindi non ha attributo. Lo stesso link.Attributes ["href"] ed ecc.

La proprietà link.HasAttributes mostra solo che il tag ha qualsiasi attributo, è un valore bool.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché