Wie behebt man schlecht formatierten HTML mit HTML Agility Pack?

8

Ich habe dieses schlecht geformte HTML mit überlappenden Tags:

%Vor%

Die Überlappung kann auch verschachtelt werden.

Wie kann ich es mit HTML Agility Pack (HAP) in wohlgeformten HTML-Code umwandeln?

Ich suche nach dieser Ausgabe:

%Vor%

Ich habe versucht, HtmlNode.ElementsFlags["b"] = HtmlElementFlag.Closed | HtmlElementFlag.CanOverlap , aber es funktioniert nicht wie erwartet.

    
avo 26.03.2014, 12:51
quelle

1 Antwort

19

Es funktioniert tatsächlich wie erwartet, aber vielleicht funktioniert es nicht so, wie Sie erwartet haben. Wie auch immer, hier ist ein Beispielcode (eine Konsolenanwendung), der demonstriert, wie Sie einige HTML-Korrekturen mit der Bibliothek erreichen können.

Die Bibliothek verfügt über eine Sammlung ParseErrors , mit der Sie feststellen können, welche Fehler beim Markup-Parsing festgestellt wurden.

Hier gibt es wirklich zwei Arten von Problemen:

1) Nicht geschlossene Elemente . Dieser ist standardmäßig von der Bibliothek fixiert, aber es gibt eine Option für das P-Element, das in diesem Fall verhindert.

2) ungeöffnete Elemente . Dieser ist komplexer, weil es hängt davon ab, wie Sie es beheben möchten, wo möchten Sie das Tag geöffnet haben? Im folgenden Beispiel habe ich den nächstliegenden Textknoten verwendet, um das Element zu öffnen.

%Vor%     
Simon Mourier 31.03.2014, 22:21
quelle