Frage

Ich verwende hxt, um etwas HTML zu analysieren.Es enthält HTML ohne Escapezeichen <textarea>.hxt liefert ungültige Ergebnisse (es stößt auf ein Tag mit Inhalt, in diesem Fall ist es das). <a>).Minimaler Testfall (für GHCi) ist

let doc = parseHtml "<textarea>before<a>link</a>after</textarea>"
runX . xshow $ doc //> hasName "textarea"

was gibt [<textarea>before</textarea><textarea/>] infolge.

Es sieht aus wie Tags ohne Inhalt (z. B. <tag/>) unterbrechen das Parsen nicht.

Gibt es eine Möglichkeit, solchen HTML-Code mit hxt zu analysieren?

War es hilfreich?

Lösung

Das Problem ist, dass Hübsche Suppe (Ich gehe davon aus, dass es dort ist, wo Sie sind parseHTML ist aus) ist wählerisch in Dingen wie der Tatsache, dass a textarea kann kein enthalten a in gültigem HTML und wird versuchen, alle derartigen Fehler zu „beheben“.

Kannst du wechseln? hxt-tagssuppe?Es akzeptiert immer noch unordentliches HTML (nicht geschlossene Elemente usw.), ist aber bei der Einhaltung des HTML-Schemas nicht so wählerisch – insbesondere ermöglicht es Ihnen ein a in einem textarea:

import Text.XML.HXT.Core
import Text.XML.HXT.TagSoup

let content = "<textarea>before<a>link</a>after</textarea>"
let doc = readString [ withTagSoup ] content
runX . xshow $ doc //> hasName "textarea"

Dadurch wird Folgendes gedruckt:

["<textarea>before<a>link</a>after</textarea>"]

Was ich denke, ist das, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top