Pregunta

Yo uso hxt a analizar algunos de html.Se hase sin escape html dentro <textarea>.hxt da resultados no válidos (se tropieza con una etiqueta con el contenido que en este caso es <a>).Mínima de prueba (para el Intérprete) es

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

lo que da [<textarea>before</textarea><textarea/>] como resultado.

Parece etiquetas sin contenido (por ejemplo, <tag/>) no romper el análisis.

Es allí cualquier manera de analizar tales html con hxt?

¿Fue útil?

Solución

El problema es que HandsomeSoup (que supongo que es donde su parseHTML es de allí) es exigente con las cosas, como el hecho de que un textarea no puede contener una a en HTML válido, y va a tratar de "arreglar" tales errores se ve.

Se puede cambiar a hxt-tagsoup?Se aceptará todavía desordenado HTML (sin cerrar elementos, etc.), pero no es tan exigente respecto a la adhesión al esquema HTML—en concreto que le permita tener un a en un 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"

Esto imprime el siguiente:

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

Que creo que es lo que quieres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top