Es scheint keine Dokumentation auf der Codeplex-Seite zu geben und aus irgendeinem Grund zeigt mir intellisense keine verfügbaren Methoden oder irgendetwas für htmlagilitypack an (zum Beispiel, wenn ich MyHtmlDocument.DocumentNode eintippe.) - es gibt kein Intellisense, um mir zu sagen, was ich tun kann Nächster)
Ich muss wissen, wie man ALLE <a> -Tags und deren Inhalt aus dem Hauptteil des HTML-Dokuments entfernt, ich kann nicht einfach Node.InnerText auf dem Hauptteil verwenden, weil das noch Inhalt von A-Umbauten zurückbringt.
Hier ist ein Beispiel HTML
<html>
<body>
I was born in <a name=BC>Toronto</a> and now I live in barrie
</body>
</html>
Ich muss zurückkehren
I was born in and now I live in barrie
Danke, ich schätze die Hilfe!
Thomas
Dadurch erhalten Sie das gewünschte Ergebnis. Dies verwendet die Recursive-Methode, um alle Ihre HTML-Knoten zu durchsuchen, und Sie können einfach weitere Knoten entfernen, indem Sie eine neue if-Anweisung hinzufügen.
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
Etwas in der Art von (tut mir leid, mein Code ist C #, aber ich hoffe, es wird trotzdem helfen)
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.