我正在尝试实现有意义的 XML 比较。我想比较两个不同的 XML 以了解它们是否“有意义”相同。
示例 XML 1:
<?xml version="1.0" encoding="UTF-8"?>
<al:moAttribute>
<al:name>impiId</al:name>
<al:value>616731935012345678</al:value>
</al:moAttribute>
<al:moAttribute>
<al:name>impuId</al:name>
<al:value>tel:+16167319350</al:value>
</al:moAttribute>
XML 2:
<?xml version="1.0" encoding="UTF-8"?>
<al:moAttribute>
<al:name>impuId</al:name>
<al:value>tel:+16167319350</al:value>
</al:moAttribute>
<al:moAttribute>
<al:name>impiId</al:name>
<al:value>616731935012345678</al:value>
</al:moAttribute>
在此示例中,两个 XML “有意义”相同,只是元素顺序不同。我想比较一下它们是否几乎相等。
我尝试了这个解决方案:
Best way to compare 2 XML documents in Java
我尝试过:
XMLUnit.setIgnoreWhitespace(true);
diff.identical (...);
diff.similar (...);
但是如果 XML 的顺序不同,XML 比较将返回 false。
请问有什么建议吗?
最佳答案
任何 XML 级别的工具都会假定元素的顺序很重要。如果您知道在您的特定词汇表中,元素的顺序并不重要,那么您需要一个能够帮助您理解词汇表的工具。因此,最好的选择是编写一个规范化转换(通常在 XSLT 中),从文档中删除不相关的差异(例如,通过对某个合适的键对元素进行排序),以便在使用标准 XML 工具(可能在 XML 之后)进行比较时,它们比较相等规范化)。
关于java - 有意义的 XML 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487551/