已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。
9年前关闭。
Improve this question
用ruby合并两个xml文档的最好/最快的方法是什么?
我有两个xml文件,一个是格式化的,所以它在视觉上是吸引人的,一个不是(它有注解和空白剥离),有一些变化的一些节点在整个,它得到经常改变。因此,我试图找出一个简单而有效的解决方案来检查更改的内容(它们可能不都有ID),并将旧文档与格式化文档合并。
9条答案
按热度按时间pzfprimi1#
有一个宝石为这个equivalent-xml
i7uaboj42#
Ara霍华德几个月前发布了一个比较XML文档的片段:Comparing XML。
dgtucam13#
是否仅在剥离的文件中进行更改?换句话说,视觉上吸引人的文件是一个主文件,它只会根据剥离文件中的更改进行更改,还是两个文件都独立编辑?如果不是都被编辑,你能不能只对剥离文件本身的最后一个示例进行比较,然后应用这些更改?
zd287kbt4#
我自己过去也想要类似的功能(主要是单元测试xml生成),但我从来没有找到一个好的解决方案。我假设在某个时候您会想要比较两个DOM并寻找差异。
你也许可以看看this 'xml subset matcher' tool是如何做事情的灵感。
polkgigr5#
查看this question的答案可能会有所帮助。
mjqavswn6#
你可能需要实现你自己的不同逻辑。Ruby的XML解析库都不支持文档区分。在尝试开发逻辑时,您可以查看LibXML::XML::Node的==操作符,它允许基于XML表示比较两个Node对象。
LibXML API Docs
wlp8pajw7#
格式化XML是一种选择吗?
你也可以使用Chilkat Ruby XML组件,它是免费的。
6ojccjat8#
如果你是通过ruby创建xml,我建议你将xml解析成ruby对象,比较它们,然后重新输出差异。
我建议的另一个选择是使用tidy将两者都打印出来,然后对两者进行文本diff并解析结果。
jecbmhm39#
恐怕唯一的办法就是手动编码。我已经编写了自己的XML diff算法,如果您保留ID,则会容易得多。通用的XML diff实用程序将以不可预测的方式运行。
如果您曾经让您的SCM尝试自动化同一个XML文件的不同版本,那么您会发现这是多么困难,即使是在昂贵的商业工具中。