活跃 - 提取原始HTML

时间:2015-02-04 13:54:57

标签: 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 :> enlive/any-node])))

=> "<p>some text <br /> some more text</p>"

在此示例中,enlive已将<br>标记转换为自动关闭标记,与原始输入代码段不同。

我怀疑enlive正在将其转变为类似打嗝的标签列表,这样原来的信息很可能会丢失。

2 个答案:

答案 0 :(得分:3)

您的怀疑是正确的,生活中消耗这些信息是为了提供对HTML的一致抽象。我不认为这是它旨在提供的功能。

答案 1 :(得分:1)

虽然这可能只是切线相关,但如果你使用&#34;追加&#34;你可以保存net.cgrand.enlive -html / html-resource

以外的信息(如评论)

https://github.com/cgrand/enlive/wiki/Table-and-Layout-Tutorial%2C-Part-3%3A-Simple-Transformations

<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")})