2015-05-06 47 views
0

我需要一種方式來保留評論從文件解析xml時。如何在使用Clojure解析XML時保留註釋?

我試過clojure.xml/parse以及其他來自github的其他非常好的庫;他們都工作得很好,只是每個人在解析過程中都會去掉評論。

任何人都可以推薦一個庫或一個技術clojure.xml,我不知道?

+2

你檢查了這個:https://github.com/clojure/data.xml – m0skit0

+0

哦,好的!看起來有希望 – lispHK01

+0

所以在data.xml中,它看起來很簡單,可以特別發出註釋,但我不確定是否有辦法在往返場景中保留它們(例如,在xml中使用slurp,修改特定元素,然後重新 - 發送到filesys) – lispHK01

回答

0

我結束了對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無效。

+0

如果您對結果滿意,您可以將您的問題標記爲已回答。 –

+0

呃,當然不是 – lispHK01