2012-03-12 36 views
3

我想区分两个小的xml文件。 Clojure.data/diff是让我靠近:clojure两个xml文件的层次差异

(clojure.data/diff (clojure.xml/parse "file1.xml") (clojure.xml/parse "file2.xml")) 

clojure.data/diff将前,后归还,但它不维护XML结构(无:标记元素)和前,后不能轻易被转换为xml(例如使用clojure.xml/emit)。

如何在clojure中的两个xml文件上执行层次化比较?

回答

0

这看起来像clojure.data中的增强请求。你能否请在jira页面上打开一个问题。

http://dev.clojure.org/jira/browse/CLJ

即使它包括一个补丁(签署协议的contrib第一)

+0

我不确定这是一个错误,clojure.data/diff只是不能解决我正在尝试处理xml文件的问题。它正确地告诉我有什么区别,但它确实保持了一个可以轻松转换为xml的结构。当两个文件都有它时,标签键不会出现在差异中 - 它只会在元组的最后一项中结束。这在技术上是正确的,但对我而言,我失去了关于xml结构的信息,特别是标签名称。 – 2012-03-12 22:58:47

+1

对不起,我曾假设:标签被丢弃并且没有被正确扩散。所以这更像是一个增强请求。 – 2012-03-12 23:02:21

+0

雅,我仍在考虑如何处理它..我的目标是对2个xml文件进行层次化比较,以确定删除,添加或更新的内容(以及树中的位置)。 – 2012-03-12 23:29:13

1

XMLUnit更好地对版本比较XML单机方法。您可以包含库,只需在Clojure中调用它即可。