我需要一种方式来保留评论从文件解析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