我需要一種方式來保留評論從文件解析xml時。如何在使用Clojure解析XML時保留註釋?
我試過clojure.xml/parse
以及其他來自github的其他非常好的庫;他們都工作得很好,只是每個人在解析過程中都會去掉評論。
任何人都可以推薦一個庫或一個技術clojure.xml
,我不知道?
我需要一種方式來保留評論從文件解析xml時。如何在使用Clojure解析XML時保留註釋?
我試過clojure.xml/parse
以及其他來自github的其他非常好的庫;他們都工作得很好,只是每個人在解析過程中都會去掉評論。
任何人都可以推薦一個庫或一個技術clojure.xml
,我不知道?
我結束了對xml字符串的一些準備工作。看起來有點冒險,但暫時會做。
(defn preparse-comments
[s]
(-> s
(s/replace #"<!--" "<comment>")
(s/replace #"-->" "</comment>")))
(defn revert-comments
[s]
(-> s
(s/replace #"<comment>" "<!--")
(s/replace #"</comment>" "-->")))
(defn load-data
[xml-filename]
(-> xml-filename
(slurp)
(preparse-comments)
(clojure.data.xml/parse-str)))
(defn emit-and-prep
[data]
(-> data
(clojure.data.xml/emit-str)
(revert-comments)))
編輯:上述是一個相當準系統的方法;如果您的註釋中包含標記包圍構件(例如,/>
等),則必須以某種方式適當考慮它們,以便預處理不會使xml無效。
如果您對結果滿意,您可以將您的問題標記爲已回答。 –
呃,當然不是 – lispHK01
你檢查了這個:https://github.com/clojure/data.xml – m0skit0
哦,好的!看起來有希望 – lispHK01
所以在data.xml中,它看起來很簡單,可以特別發出註釋,但我不確定是否有辦法在往返場景中保留它們(例如,在xml中使用slurp,修改特定元素,然後重新 - 發送到filesys) – lispHK01