Для проекта ClojureScript
Я ищу краткий способ извлечения содержимого из внешнего документа HTML
на стороне клиента. Содержимое фактически получено через вызов ajax в формате Markdown
, который затем анализируется на HTML
. Таким образом, строка HTML
является отправной точкой.Извлечение элементов из html-строки в ClojureScript
(def html-string "<p>Something, that <a>was</a> Markdown before</p>")
библиотеки Enlive
и Garden
для векторов использования экземпляра, чтобы выразить CSS селекторов, которые необходимы здесь. Enlive
имеет переднюю сестру, называемую Enfocus
, которая обеспечивает аналогичную семантику.
Вот enfocus
пример, который извлекает некоторый контент из текущего DOM:
(require '[enfocus.core :as ef])
(ef/from js/document.head :something [:title]
(ef/get-text))
;;{:something "My Title"}
Если бы было больше матчей значение :something
станет вектором. Я не мог понять, как применить эту функцию к произвольным строкам HTML
. Ближайший я мог бы получить было с помощью этой функции:
(defn html->node [h]
(doto (.createElement js/document "div")
(aset "innerHTML" h)))
, а затем:
(ef/from (html->node html-string) :my-link [:a]
(ef/get-text))
;;{:my-link "was"}
Однако, это не совсем чистый, так как теперь есть DIV оборачивать все, что может вызвать проблемы в некоторых ситуации.
Может быть просто взять FirstChild вашего DIV , –