HTML5 允许<meta>
标签出现在正文中,但 Enlive 似乎不支持这一点:
(deftest test-enlive
(testing "enlive"
(let [html-as-string "<!DOCTYPE html><html lang=\"en\"><body><div><meta foo=\"bar\"><span>the content</span></body></html>"
parsed-html (enlive/html-resource (java.io.StringReader. html-as-string))
span (enlive/select parsed-html [ :div :span ])
content (first (map enlive/text span))]
(is (= "the content" content)))))
此测试失败,但如果您删除元标记,它将通过。
这个旧线程让我意识到这是导致问题的元标记。
我意识到 Enlive 依赖于 Tagsoup,但是当我将其切换为 JSoup(声称支持 HTML5)时,我得到了相同的结果。