eval = $self->compare_as_dom( $file1, $file2 ); }; if ( $@ ) { $error = $@; } } else { $error = 'You must select two XML files to compare and wait for them to finish uploading'; } if ( $error ) = $self->dom_from_data( { error => $error } ); } |
unless ( defined( $context-> )) { my $msg = "Files are semantically identical."; $context-> = $self->dom_from_data( { message => $msg } ); } } |
sub compare { my $self = shift; my ( $xmlstring1, $xmlstring2 ) = @_; my $diff = XML::SemanticDiff->new( keeplinenums => 1 ); my @results = $diff->compare( $xmlstring1, $xmlstring2 ); return @results; } |
sub dom_from_data { my ( $self, $ref ) = @_; my $builder = XML::LibXML::SAX::Builder->new(); my $generator = XML::Generator::PerlData->new( Handler => $builder ); my $dom = $generator->parse( $ref ); return $dom; } |
sub compare_as_dom { my $self = shift; my $diff_messages = $self->compare( @_ ); return undef unless scalar( @ ) > 0; return $self->dom_from_data( { difference => $diff_messages } ); } 1; |
#!/usr/bin/perl -w use strict; use SOAP::Transport::HTTP; use WebSemDiff; if ( defined( $ENV )) { SOAP::Transport::HTTP::CGI -> dispatch_to('WebSemDiff') -> handle; } else { my $app = WebSemDiff->new(); $app->run(); } |
用户评论