2009-03-20 7 views
18

WSDLは、多くの場合、他のWSDLとXMLスキーマをインポートします。インポート/インクルードされたすべてのWSDLとスキーマをダウンロードする簡単なツール

WSDLのURLを指定すると、WSDLおよびその他の参照されるWSDLとスキーマをダウンロードするツールがありますか?

理想的には、このツールはJavaまたはPerlに適しています。

+0

私は無料のAPIやコマンドラインツールを探しています。私はあまりアプリケーションの提案を探していません。 – zzztimbo

答えて

13

ウェブサイトは

を説明してあるsoapUIは、インターフェイスの視聴者は、すべてのインポートおよび含まWSDLおよびXSDファイルとその含まれているタイプなど、インポートされたWSDLの契約全体の比較的簡単なナビゲーションと検査を可能にする、WSDLのコンテンツビューアを持っています、定義、など

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

+12

SoapUIには、WSDLをローカルファイルにエクスポートする機能もあります。プロジェクトを右クリックし、「定義のエクスポート」を選択します。 –

1

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

2

次の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属性をスキャンし、すべてのスキーマが見つかるか見つからないようになるまで、各ファイルを再帰的にダウンロードします。これは再帰的にインポートされた各XSDてWSDLファイルから作業し、現在のディレクトリ内のすべてのファイルを作成しようとします

perlのthisscript.perl wsdlURL

:スクリプトを呼び出すために

関連する問題