Clojure Enlive-提取原始HTML
是否可以使用enlive选择器检索原始HTML及其怪癖和格式Clojure Enlive-提取原始HTML,clojure,enlive,Clojure,Enlive,是否可以使用enlive选择器检索原始HTML及其怪癖和格式 (def data "<div class=\"foo\"><p>some text <br> some more text</p></div>") (apply str (enlive/emit* (enlive/select (enlive/html-snippet data) [:.foo
(def data "<div class=\"foo\"><p>some text <br> some more text</p></div>")
(apply str
(enlive/emit* (enlive/select (enlive/html-snippet data)
[:.foo :> enlive/any-node])))
=> "<p>some text <br /> some more text</p>"
在本例中,与原始输入片段不同,enlive已将标记转换为自动关闭标记
我怀疑enlive正在将其转换为一个类似于打嗝的标记列表,这样原始信息就不幸丢失了。您的怀疑是正确的,enlive在努力为HTML提供一致的抽象时使用了这些信息。我不认为这是它设计提供的功能。尽管这可能只是无关紧要的,但如果使用append,您可以保留诸如注释之类的信息,否则这些信息将被net.cgrand.enlive-html/html-resource抛出
<div id="wrapper">
<!--body-->
</div>
jcrit.server=> (pprint
(transform layout [:#wrapper]
(append page-content)))
({:tag :html,
{:tag :div,
:attrs {:id "wrapper"},
:content
("\n "
{:type :comment, :data "body"} ; <<== Still there.
"\n "
{:tag :p, :content ("Hi, mom!")})}
"\n")}
"\n\n")})