我需要找出两个 WSDL 文件的不同之处。我开始像这里一样漂亮地打印它们,但我看到complexType
在定义的两个文件中(无论出于何种愚蠢的原因)以不同的顺序有相同的东西(例如s)。我想进一步规范化文件,以便以后可以使用标准之类diff
的东西来查找差异。
不知道是否有为 WSDL 定义的规范形式,我知道有Canonical XML,但我需要更进一步,对所有顺序无关紧要的东西进行排序。
我需要找出两个 WSDL 文件的不同之处。我开始像这里一样漂亮地打印它们,但我看到complexType
在定义的两个文件中(无论出于何种愚蠢的原因)以不同的顺序有相同的东西(例如s)。我想进一步规范化文件,以便以后可以使用标准之类diff
的东西来查找差异。
不知道是否有为 WSDL 定义的规范形式,我知道有Canonical XML,但我需要更进一步,对所有顺序无关紧要的东西进行排序。
您可以从http://www.jclark.com/xml/下载一个将 XML 转换为规范 XML的 Java 程序。这也应该适用于 WSDL 文件。
我递归地遍历树并对所有节点匹配的子节点进行排序schema|wsdl:binding|wsdl:portType|wsdl:types|wsdl:definitions
。我用这个答案来漂亮地打印输出。无论出于何种原因format.setLineWidth(65);
都不起作用,所以我不得不使用replaceAll("\\s*\n\\s*(?=[^\\s<])", " ")
. 它似乎工作正常。