diff options
Diffstat (limited to 'kresources/groupwise/soap/extractxml.pl')
-rwxr-xr-x | kresources/groupwise/soap/extractxml.pl | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/kresources/groupwise/soap/extractxml.pl b/kresources/groupwise/soap/extractxml.pl new file mode 100755 index 000000000..ecab50861 --- /dev/null +++ b/kresources/groupwise/soap/extractxml.pl @@ -0,0 +1,57 @@ +#!/usr/bin/perl + +if ( @ARGV != 1 ) { + print STDERR "Usage: extractxml.pl <filename>\n"; + exit 1; +} + +$in = $ARGV[ 0 ]; + +print "In: $in\n"; + +if ( !open IN, $in ) { + print STDERR "Unable to open file '$in'.\n"; + exit 1; +} + +$count = 1; + +while ( <IN> ) { + if ( $xml ) { + if ( $_ =~ /(.*\<\/SOAP-ENV:Envelope\>)/ ) { + printXml( $xml . $1 ); + $xml = ""; + } else { + $xml .= $_; + } + } elsif ( $_ =~ /^(\<\?xml.*\?>)(.*)$/ ) { + $xml = $1 . $2; + + if ( $xml =~ /(.*\<\/SOAP-ENV:Envelope\>)/ ) { + printXml( $1 ); + $xml = ""; + + } + } +} + +sub printXml() +{ + $xml = shift; + + $xml =~ s/\n//g; + $xml =~ s/\r//g; + + $out = "$in.$count.xml"; + + print "Out: $out\n"; + + if ( !open OUT, ">$out" ) { + print STDERR "Unable to open file '$out'.\n"; + } else { + print OUT $xml; + close OUT; + } + + $count += 1; +} |