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

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

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

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

Ответы [ 3 ]

14 голосов
/ 21 марта 2009

soapUI имеет просмотрщик содержимого WSDL, как описывает сайт

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

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

4 голосов
/ 07 октября 2016

Следующий скрипт на 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

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

1 голос
/ 21 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...