2009-03-20 6 views
18

WSDL은 종종 다른 WSDL 및 XML 스키마를 가져옵니다.가져온/포함 된 모든 WSDL 및 스키마를 다운로드하는 간단한 도구

WSDL에 대한 URL이 주어지면 WSDL 및 다른 모든 참조 된 WSDL 및 스키마를 다운로드 할 수있는 도구가 있습니까?

이상적으로이 도구는 Java 또는 Perl과 호환 될 수 있습니다. 웹 사이트

인터페이스 뷰어는 모든 수입 포함 WSDL 및 XSD 파일 및 포함 된 유형을 포함하여 가져온 WSDL 상대적으로 쉬운 탐색 및 전체 계약의 검사를 할 수 있습니다 설명으로

+0

무료 API 또는 명령 줄 도구가 더 필요합니다. 나는 응용 프로그램 제안을 많이 찾지 않습니다. – zzztimbo

답변

1

는 WSDL 여러 스키마를 다운로드 시각화하고 모델링 할 수있는 Altova SchemaAgent 도구입니다. 일들이 복잡해지면 매우 좋습니다.

2

다음 펄 스크립트는 당신이 원하는 것을 할 것입니다 :

#!/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 속성에 대해 해당 파일을 스캔하고 모든 스키마가 있거나 찾을 수 없을 때까지 재귀 방식으로 각 파일을 다운로드합니다.

펄 thisscript.perl WSDLURL

그것은 반복적으로 가져온 각 XSD를 통해 WSDL 파일에서 작업하고 현재 디렉토리에있는 모든 파일을 만들려고합니다

스크립트를 호출합니다.