gpt4 book ai didi

XML/WSDL 比较工具

转载 作者:数据小太阳 更新时间:2023-10-29 01:40:09 24 4
gpt4 key购买 nike

对于那些经常使用网络服务的人来说,他们会不时得到更新并不奇怪。而且您始终需要跟踪这些更新的变化。

在我的特定案例中,我处理由 WSDL 定义的 Web 服务,并获得基于此 WSDL 生成的类。

但是在从更新的 WSDL 中重新生成类之前,我想看看 WSDL 中发生了什么变化并确定变化量 - 看看我应该准备什么。

不幸的是,如果我只比较新旧版本的 .wsdl 文件,它并不总是工作得很好,原因之一是 - wsdl 内容可以重新排序(内部重构)。这就是寻找更多语义工具的原因。

我尝试过 Oxygen XML Diff 工具,但它对我来说效果不佳。

我正在寻找一种工具,它可以接受两个 XML,并且只给我带来语义差异,例如:

  • 添加元素A
  • 将子元素 b7 添加到元素 B

为此,我想该工具必须加载并深入分析结构,据称 Oxygen XML Diff 可以很好地完成此工作,但它只是文本文件比较的改进版本。

您能否推荐一个为此工作的工作,特别是查看基于 WSDL 的网络服务更新。

更新 1:新想法是比较生成的源而不是 WSDL。

谢谢。

最佳答案

http://membrane-soa.org有一个Java API for comparing WSDL在他们的 SOA Model .

package sample.wsdl;

import java.util.List;
import com.predic8.wsdl.*;
import com.predic8.wsdl.diff.WsdlDiffGenerator;
import com.predic8.soamodel.Difference;

public class CompareWSDL {

public static void main(String[] args) {
compare();
}

private static void compare(){
WSDLParser parser = new WSDLParser();

Definitions wsdl1 = parser.parse("resources/diff/1/article.wsdl");

Definitions wsdl2 = parser.parse("resources/diff/2/article.wsdl");

WsdlDiffGenerator diffGen = new WsdlDiffGenerator(wsdl1, wsdl2);
List<Difference> lst = diffGen.compare();
for (Difference diff : lst) {
dumpDiff(diff, "");
}
}

private static void dumpDiff(Difference diff, String level) {
System.out.println(level + diff.getDescription());
for (Difference localDiff : diff.getDiffs()){
dumpDiff(localDiff, level + " ");
}
}
}

After executing you get the output shown in listing 2. It is a List of differences between the two WSDL documents.

Port ArticleServicePTPort removed.
Port ArticleServicePTPort2 added.
Operation create removed.
Operation create2 added.
Schema http://predic8.com/wsdl/material/ArticleService/1/ has changed:
Element createResponse has changed:
ComplexType has changed:
Sequence has changed:
Element NewElementForTest added.

有关工具输出的示例,http://www.service-repository.com/提供 online WSDL Comparator tool返回两个 WSDL 之间差异的报告。该报告不是简单的 XML 差异。

关于XML/WSDL 比较工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com