Wie entferne ich bestimmte Elemente aus HTML mit HTML Agility Pack für ASP.NET (vb)

asp.net html-agility-pack vb.net

Frage

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

Akzeptierte Antwort

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

Beliebte Antwort

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.


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum