diff options
author | Daniel Friesel <derf@finalrewind.org> | 2011-11-30 21:47:56 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2011-11-30 21:47:56 +0100 |
commit | 316d373be0167ba84a4e6c08cca02fa2ef8c2c65 (patch) | |
tree | 7efb0916bc58ab908442239945c339934b26cfaf | |
parent | e1a7eefbb36126b925e78b9f7acd3ac9a086e85c (diff) |
catch other errors
-rw-r--r-- | lib/Travel/Status/DE/VRR.pm | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Travel/Status/DE/VRR.pm b/lib/Travel/Status/DE/VRR.pm index 5fdef27..fe6c941 100644 --- a/lib/Travel/Status/DE/VRR.pm +++ b/lib/Travel/Status/DE/VRR.pm @@ -156,12 +156,15 @@ sub check_for_ambiguous { my $xp_place = XML::LibXML::XPathExpression->new('//itdOdv/itdOdvPlace'); my $xp_name = XML::LibXML::XPathExpression->new('//itdOdv/itdOdvName'); + my $xp_mesg + = XML::LibXML::XPathExpression->new('//itdMessage[@type="error"]'); my $xp_place_elem = XML::LibXML::XPathExpression->new('./odvPlaceElem'); my $xp_name_elem = XML::LibXML::XPathExpression->new('./odvNameElem'); my $e_place = ( $xml->findnodes($xp_place) )[0]; my $e_name = ( $xml->findnodes($xp_name) )[0]; + my @e_mesg = $xml->findnodes($xp_mesg); if ( not( $e_place and $e_name ) ) { @@ -180,6 +183,7 @@ sub check_for_ambiguous { map { decode( 'UTF-8', $_->textContent ) } @{ $e_place->findnodes($xp_place_elem) } ) ); + return; } if ( $s_name eq 'list' ) { $self->{errstr} = sprintf( @@ -188,12 +192,19 @@ sub check_for_ambiguous { map { decode( 'UTF-8', $_->textContent ) } @{ $e_name->findnodes($xp_name_elem) } ) ); + return; } if ( $s_place eq 'notidentified' ) { $self->{errstr} = 'invalid place parameter'; + return; } if ( $s_name eq 'notidentified' ) { $self->{errstr} = 'invalid name parameter'; + return; + } + if (@e_mesg) { + $self->{errstr} = join( q{; }, map { $_->textContent } @e_mesg ); + return; } return; |