适用于 Solaris 的命令行 XML Diff 实用程序
谁能推荐一个适用于 Solaris 的命令行 xml 差异工具?我想在回归测试脚本中调用一个工具,因此可以从命令行调用该工具并返回一个状态以指示文件是否包含任何差异,这一点很重要。
该工具必须具有忽略属性顺序的选项。
谢谢, 戴夫
Can anyone suggest a command line xml differencing tool for Solaris? I want to call one in a regression test script, so it's important that the tool can be called from the command line and return a status to indicate whether the files contain any differences.
The tool must have an option to ignore attribute order.
Thanks,
Dave
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我遇到了这个问题,最终自己编写了这个问题,因为我需要知道其中的区别[1]。如果您只需知道预期的 XML 和实际的 XML 是否相同即可进行管理,那么最简单的方法是将 XML 规范化为字符串并比较字符串。
规范化是 XML 工具包规范的一部分,它生成一个独立于属性顺序、引用类型、CDATA 规范化等的字符串。
所有优秀的 XML 解析器都应该具有此功能。我使用 XOM (http://www.xom.nu) (Java),它有一个规范化器并且很简单使用。
[1] 我的 XML 包含实数的表示形式,由于舍入误差可能会略有不同。简单的词法比较不起作用(x="1.99999994" 和 x="2" 在词法上不相同,但在给定的 epsilon 内可能相等)。
I had this problem and ended up writing my own because I needed to know what the difference was[1]. If you can manage with simply knowing whether the expected and actual XML are identical the simplest thing is to canonicalize the XML into a string and diff the strings.
Canonicalization is part of the XML toolkits spec and produces a string which is independent of attribute order, type of quoting, normalization of CDATA, etc.
All good XML parsers should have this. I use XOM (http://www.xom.nu) (Java) which has a canonicalizer and is simple to use.
[1] My XML contained representations of real numbers which might differ slightly due to rounding errors. Simple lexical comparison does not work (x="1.99999994" and x="2" are not lexically identical but may be equal within a given epsilon).
您可以尝试 diffxml。属性顺序被忽略(根据 XML 规范)。
You can try diffxml. Attribute order is ignored (as per the XML spec).