WSDL经常导入其他WSDL和XML模式。
给定WSDL的URL,是否有一个工具可以下载WSDL和所有其他引用的WSDL和模式?
理想情况下,此工具可以是Java或Perl友好的。
答案 0 :(得分:14)
soapUI有一个WSDL内容查看器,网站描述
Interface查看器允许相对轻松地导航和检查导入的WSDL的整个合同,包括所有导入和包含的WSDL和XSD文件及其包含的类型,定义等。
http://www.soapui.org/userguide/interfaces/interfaceeditor.html
答案 1 :(得分:4)
以下perl脚本将执行您想要的操作:
#!/usr/bin/perl
#
use strict;
use warnings;
use LWP::Simple;
sub downloadfile {
my ($url, $file) = @_;
getstore($url, $file);
}
sub getLinesMatching {
my ($file, $pattern) = @_;
open my $fh,'<',$file or die "Could not open $file: $!";
my @matching = grep /schemaLocation/,<$fh>;
my $size = @matching;
close $fh;
@matching;
}
sub processFile {
my ($url, $file) = @_;
downloadfile $url, $file;
my @lines = getLinesMatching $file,'schemaLocation';
if (@lines > 0) {
foreach my $line (@lines) {
$line =~ /schemaLocation=\"([^\"]*)/;
my ($url2) = $1;
print "$url2\n\n";
$url2 =~ /.*\/([^\/]*)/;
my ($file2) = $1;
print "$file2\n\n";
processFile ($url2, $file2);
}
}
}
my ($url) = @ARGV;
$url =~ /.*\/([^\/]*)/;
my ($base) = $1;
$base =~ s/\?/./;
print "Processing [$base] for [$url]\n\n";
processFile $url, $base;
总之,它将传入的参数作为URL检索为第一个文件。然后,它会扫描该文件中的schemaLocation属性,并以递归方式下载每个文件,直到找到所有模式或找不到这些模式。
调用脚本:
perl thisscript.perl wsdlURL
它将尝试以递归方式从wsdl文件到每个导入的xsd工作,并创建当前目录中的所有文件。
答案 2 :(得分:1)
Altova SchemaAgent工具可以下载,可视化和建模WSDL和多个模式。当事情变得复杂时,这是非常好的。