下载所有导入/包含的WSDL和模式的简单工具

时间:2009-03-20 20:38:03

标签: web-services import wsdl

WSDL经常导入其他WSDL和XML模式。

给定WSDL的URL,是否有一个工具可以下载WSDL和所有其他引用的WSDL和模式?

理想情况下,此工具可以是Java或Perl友好的。

3 个答案:

答案 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和多个模式。当事情变得复杂时,这是非常好的。