web-dev-qa-db-ja.com

インポート/インクルードされたすべてのWSDLとスキーマをダウンロードするためのシンプルなツール

WSDLは、他のWSDLおよびXMLスキーマをインポートすることがよくあります。

WSDLへのURLが与えられた場合、WSDLおよび他のすべての参照されたWSDLとスキーマをダウンロードするツールはありますか?

理想的には、このツールはJavaまたはPerl対応)のいずれかです。

19
zzztimbo

ウェブサイトで説明されているように、soapUIにはWSDLコンテンツビューアがあります

インターフェイスビューアを使用すると、インポートおよびインクルードされたすべてのWSDLファイルとXSDファイル、およびそれらに含まれるタイプ、定義などを含む、インポートされたWSDLのコントラクト全体を比較的簡単にナビゲーションおよび検査できます。

http://www.soapui.org/userguide/interfaces/interfaceeditor.html

14
Jude

次の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

インポートされた各xsdを介してwsdlファイルから再帰的に作業し、現在のディレクトリにすべてのファイルを作成しようとします。

4
sweetfa

Altova SchemaAgent ツールは、WSDLと複数のスキーマをダウンロード、視覚化、モデル化できます。物事が複雑になるととてもいいです。

1
John Saunders