Парсинг HTML5 с помощью Enlive/Tagsoup/JSoup
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), я получаю тот же результат.