作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用 hxt 来解析一些 html。它里面有未转义的 html <textarea>
. hxt 给出了无效的结果(它偶然发现了一个带有内容的标签,在这种情况下它是 <a>
)。最小测试用例(对于 GHCi)是
let doc = parseHtml "<textarea>before<a>link</a>after</textarea>"
runX . xshow $ doc //> hasName "textarea"
给出 [<textarea>before</textarea><textarea/>]
结果。
看起来没有内容的标签(例如 <tag/>
)不会中断解析。
有什么办法可以用hxt解析这样的html吗?
最佳答案
问题是 HandsomeSoup (我假设这是你的 parseHTML
的来源)对诸如 textarea
之类的事情很挑剔。不能包含 a
在有效的 HTML 中,并将尝试“修复”它看到的任何此类错误。
你能切换到hxt-tagsoup吗? ?它仍然会接受杂乱的 HTML(未封闭的元素等),但对遵守 HTML 模式并不那么挑剔——特别是它会让你有一个 a
。在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"
这将打印以下内容:
["<textarea>before<a>link</a>after</textarea>"]
我想这就是你想要的。
关于html - 是否可以通过其中包含 <a> 的 hxt <textarea> 进行解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12670344/
我是一名优秀的程序员,十分优秀!