Простой инструмент для загрузки всех импортированных / включенных WSDL и схем

19

WSDL часто импортируют другие WSDL и XML-схему.

Учитывая URL-адрес WSDL, есть ли инструмент, который будет загружать WSDL и все другие ссылки на WSDL и схемы?

В идеале этот инструмент будет либо дружественным Java, либо Perl.

    
задан zzztimbo 20.03.2009 в 21:38
источник
  • Я ищу больше для инструмента API или командной строки, который является бесплатным; Я не очень ищу предложения. –  zzztimbo 21.03.2009 в 19:01

3 ответа

14

soapUI имеет средство просмотра контента WSDL, поскольку веб-сайт описывает

Средство просмотра интерфейса позволяет относительно легко осуществлять навигацию и проверку всего контракта для импортированного WSDL, включая все импортированные и включенные файлы WSDL и XSD, а также их содержащиеся типы, определения и т. д.

Ссылка

    
ответ дан Jude 20.03.2009 в 22:33
  • SoapUI также имеет возможность экспортировать WSDL в локальный файл. Щелкните правой кнопкой мыши по проекту и выберите «Определение экспорта». –  Chase Seibert 24.09.2009 в 17:16
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) = ;
                        print "$url2\n\n";
                        $url2 =~ /.*\/([^\/]*)/;
                        my ($file2) = ;
                        print "$file2\n\n";
                        processFile ($url2, $file2);
                }
        }
}


my ($url) = @ARGV;
$url =~ /.*\/([^\/]*)/;
my ($base) = ;
$base =~ s/\?/./;

print "Processing [$base] for [$url]\n\n";

processFile $url, $base;

Таким образом, он принимает переданный параметр в качестве URL-адреса для получения в качестве первого файла. Затем он сканирует этот файл для атрибутов schemaLocation и загружает каждый из этих файлов рекурсивным образом, пока все схемы не будут найдены или не могут быть найдены.

Чтобы вызвать скрипт:

  

perl thisscript.perl wsdlURL

Он попытается рекурсивно работать из файла wsdl через каждый импортированный xsd и создавать все файлы в текущем каталоге.

    
ответ дан sweetfa 07.10.2016 в 08:03
1

Средство Altova SchemaAgent может загружать, визуализировать и моделировать WSDL и несколько схем. Это очень приятно, когда все становится сложным.

    
ответ дан John Saunders 21.03.2009 в 14:36