是否有可能确定差异(例如:新元素,修改元素,删除元素…)在两个XML文档中的ruby?
请允许我引用Aaron Patterson的话:
就XML文档而言,没有两个节点是相等的。文档中的每个节点都是不同的。每个节点都有许多属性比较:
- 名称相同吗?
- 属性呢?
- 名称空间呢?
- 孩子的数量呢?
- 所有的孩子都一样吗?
- 它的父节点相同吗?
- 它相对于兄弟节点的位置如何?
考虑在同一个文档中添加两个节点。他们可以永远相对于兄弟节点有相同的位置,因此是两个节点在一个文档中不能是"equal"
你可以比较两个不同的文档。但是你需要当你在两棵树上行走时,自己回答这7个问题。您对一致性的要求可能与其他人不同。
我不反对在Node上实现这样的a =~比较,但对那些问题非常严格。
你可以这样做:
doc1 =~ doc2 # => true
Doc2 =~ doc3 # => false只要它只返回真或假。听起来怎么样?
—Aaron Patterson http://tenderlovemaking.com/
否则,有遍历:
将XML文档加载到具有Hash#from_xml
的散列中,并比较散列。