Sembra che non ci sia documentazione sulla pagina di codeplex e per qualche ragione intellisense non mi mostra metodi disponibili o qualcosa del genere per htmlagilitypack (per esempio quando digito MyHtmlDocument.DocumentNode. - non c'è intellisenza per dirmi cosa posso fare Il prossimo)
Ho bisogno di sapere come rimuovere TUTTI i tag <a> e il loro contenuto dal corpo del documento HTML. Non posso semplicemente usare Node.InnerText sul Corpo perché ciò restituisce ancora il contenuto dei tag A.
Ecco un esempio di HTML
<html>
<body>
I was born in <a name=BC>Toronto</a> and now I live in barrie
</body>
</html>
Ho bisogno di tornare
I was born in and now I live in barrie
Grazie, apprezzo l'aiuto!
Tommaso
Questo ti porta il risultato che desideri. Questo utilizza il metodo ricorsivo per scavare verso il basso tutti i nodi html e puoi semplicemente rimuovere più nodi aggiungendo una nuova stat.
Public Sub Test()
Dim document = New HtmlDocument() With { _
Key .OptionOutputAsXml = True _
}
document.LoadHtml("<html><body>I was born in <a name=BC>Toronto</a> and now I live in barrie</body></html>")
For i As var = 0 To document.DocumentNode.ChildNodes.Count - 1
RecursiveMethod(document.DocumentNode.ChildNodes(i))
Next
Console.Out.WriteLine(document.DocumentNode.InnerHtml.Replace(" ", " "))
End Sub
Public Sub RecursiveMethod(child As HtmlNode)
For x As var = 0 To child.ChildNodes.Count - 1
Dim node = child.ChildNodes(x)
If node.Name = "a" Then
node.RemoveAll() //removes all the child nodes of "a"
node.Remove() //removes the actual "a" node
Else
If node.HasChildNodes Then
RecursiveMethod(node)
End If
End If
Next
End Sub
Qualcosa sulla falsariga di (mi dispiace il mio codice è C # ma spero che possa essere d'aiuto comunque)
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("some html markup here");
HtmlNodeCollection links = doc.DocumentNode.SelectNodes("//a[@name]");
foreach(HtmlNode link in links)
{
link.Remove();
}
//then one of the many doc.Save(...) overrides to actually get the result of the operation.