다음 펄 스크립트는 당신이 원하는 것을 할 것입니다 :
#!/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 파일에서 작업하고 현재 디렉토리에있는 모든 파일을 만들려고합니다
스크립트를 호출합니다.
무료 API 또는 명령 줄 도구가 더 필요합니다. 나는 응용 프로그램 제안을 많이 찾지 않습니다. – zzztimbo