gpt4 book ai didi

clojure - 有没有 html 解析器来打嗝结构?

转载 作者:行者123 更新时间:2023-12-02 10:01:14 28 4
gpt4 key购买 nike

我正在寻找一个可以逆转 clojure 打嗝的函数

所以

   <html></html>

turns into

[:html]

等等

<小时/>

根据@kotarak的回答,这现在对我有用:

(use 'net.cgrand.enlive-html)
(import 'java.io.StringReader)

(defn enlive->hiccup
[el]
(if-not (string? el)
(->> (map enlive->hiccup (:content el))
(concat [(:tag el) (:attrs el)])
(keep identity)
vec)
el))

(defn html->enlive
[html]
(first (html-resource (StringReader. html))))

(defn html->hiccup [html]
(-> html
html->enlive
enlive->hiccup))

=> (html->hiccup "<html><body id='foo'>hello</body></html>")
[:html [:body {:id "foo"} "hello"]]

最佳答案

您可以从enlivehtml-resource得到这样的结构:

{:tag :html :attrs {} :content []}

然后遍历这个并将其变成一个打嗝结构。

(defn html->hiccup
[html]
(if-not (string? html)
(->> (map html->hiccup (:content html))
(concat [(:tag html) (:attrs html)])
(keep identity)
vec)
html))

这里是一个使用示例:

user=>  (html->hiccup {:tag     :p
:content ["Hello" {:tag :a
:attrs {:href "/foo"}
:content ["World"]}
"!"]})
[:p "Hello" [:a {:href "/foo"} "World"] "!"]

关于clojure - 有没有 html 解析器来打嗝结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11094837/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com