2009-03-20 24 views
18

Các WSDL thường nhập các WSDL và lược đồ XML khác.Công cụ đơn giản để tải xuống tất cả các WSDL và các lược đồ được nhập/bao gồm

Đưa URL vào WSDL, có công cụ nào sẽ tải xuống WSDL và tất cả các WSDL và lược đồ được tham chiếu khác không?

Lý tưởng nhất, công cụ này sẽ là Java hoặc Perl thân thiện.

+0

Tôi đang tìm kiếm thêm API hoặc công cụ dòng lệnh miễn phí; Tôi không tìm kiếm nhiều đề xuất ứng dụng. – zzztimbo

Trả lời

13

soapUI có một người xem nội dung WSDL, như trang web mô tả

Giao diện người xem cho phép chuyển hướng tương đối dễ dàng và kiểm tra toàn bộ hợp đồng cho một WSDL nhập khẩu, bao gồm tất cả WSDL và XSD file nhập khẩu và bao gồm và loại chứa của họ , định nghĩa, vv

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

+12

SoapUI cũng có khả năng xuất WSDL thành tệp cục bộ. Nhấp chuột phải vào dự án và chọn "Xuất Định nghĩa". –

1

Công cụ Altova SchemaAgent có thể tải về, hình dung và mô hình hóa một WSDL và nhiều schemas. Nó rất đẹp khi mọi thứ trở nên phức tạp.

2

Các kịch bản perl sau đây sẽ làm những gì bạn muốn:

#!/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; 

Nói tóm lại, phải mất trôi qua trong tham số dưới dạng URL để lấy như các tập tin đầu tiên. Sau đó nó quét tệp đó cho các thuộc tính schemaLocation và tải xuống từng tệp trong một cách đệ quy cho đến khi tất cả các lược đồ được định vị hoặc không thể tìm thấy.

Để gọi các kịch bản:

perl thisscript.perl wsdlURL

Nó sẽ cố gắng một cách đệ quy làm việc từ file wsdl qua từng xsd nhập khẩu và tạo ra tất cả các file trong thư mục hiện hành.

Các vấn đề liên quan