Loading share/xml2json +43 −14 Original line number Diff line number Diff line Loading @@ -25,11 +25,12 @@ for my $station ( @{$stations} ) { my %station_by_name; for my $station ( @{$stations} ) { $station_by_name{ $station->{name} } = $station; push( @{ $station_by_name{ $station->{name} } }, $station ); } my %xml_by_name; my %xml_by_ds100; my %xml_by_eva; my %xml_by_name; my $xml_str = read_file('stations.xml'); my $tree = XML::LibXML->load_xml( string => $xml_str ); Loading @@ -55,8 +56,22 @@ for my $station ( $tree->findnodes('//station') ) { ds100 => $ds100, is_db => $is_db, }; $xml_by_name{$name} = $xml_station; $xml_by_eva{$eva} = $xml_station; $xml_by_ds100{$ds100} = $xml_station; $xml_by_eva{$eva} = $xml_station; if ( exists $xml_by_eva{$name} ) { push( @{ $xml_by_name{$name}{extra} }, $xml_station ); } else { $xml_by_name{$name} = $xml_station; } } for my $station ( $tree->findnodes('//station') ) { my $name = $station->getAttribute('name'); my $eva = $station->getAttribute('eva'); my $ds100 = $station->getAttribute('ds100'); my $is_db = $station->getAttribute('db') eq 'true'; my $found = 0; Loading @@ -80,20 +95,34 @@ for my $station ( $tree->findnodes('//station') ) { ); } elsif ( $station_by_name{$name} and $station_by_name{$name}{ds100} ne $ds100 and $is_db and $ds100 !~ m{ ^ PQ }x ) and not any { $_->{ds100} eq $ds100 } @{ $station_by_name{$name} } and $is_db ) { printf( "%30s has been recoded: %8s -> %8s\n", $name, $station_by_name{$name}{ds100}, $ds100 ); printf( "%30s has a new DS100 alias: %8s\n", $name, $ds100 ); my $station = { name => $name, ds100 => $ds100, eva => $eva, }; push( @{$stations}, $station ); $station_by_eva{$eva} = $station; $station_by_ds100{$ds100} = $station; push( @{ $station_by_name{$name} }, $station ); } elsif ( $station_by_name{$name} and $station_by_name{$name}{eva} ne $eva and $is_db and $ds100 !~ m{ ^ PQ }x ) and not any { $_->{eva} eq $eva } @{ $station_by_name{$name} } and $is_db ) { printf( "%30s has been recoded: %d -> %d\n", $name, $station_by_name{$name}{eva}, $eva ); printf( "%30s has a new EVA alias: %d\n", $name, $eva ); my $station = { name => $name, ds100 => $ds100, eva => $eva, }; push( @{$stations}, $station ); $station_by_eva{$eva} = $station; $station_by_ds100{$ds100} = $station; push( @{ $station_by_name{$name} }, $station ); } if ( not $found Loading Loading
share/xml2json +43 −14 Original line number Diff line number Diff line Loading @@ -25,11 +25,12 @@ for my $station ( @{$stations} ) { my %station_by_name; for my $station ( @{$stations} ) { $station_by_name{ $station->{name} } = $station; push( @{ $station_by_name{ $station->{name} } }, $station ); } my %xml_by_name; my %xml_by_ds100; my %xml_by_eva; my %xml_by_name; my $xml_str = read_file('stations.xml'); my $tree = XML::LibXML->load_xml( string => $xml_str ); Loading @@ -55,8 +56,22 @@ for my $station ( $tree->findnodes('//station') ) { ds100 => $ds100, is_db => $is_db, }; $xml_by_name{$name} = $xml_station; $xml_by_eva{$eva} = $xml_station; $xml_by_ds100{$ds100} = $xml_station; $xml_by_eva{$eva} = $xml_station; if ( exists $xml_by_eva{$name} ) { push( @{ $xml_by_name{$name}{extra} }, $xml_station ); } else { $xml_by_name{$name} = $xml_station; } } for my $station ( $tree->findnodes('//station') ) { my $name = $station->getAttribute('name'); my $eva = $station->getAttribute('eva'); my $ds100 = $station->getAttribute('ds100'); my $is_db = $station->getAttribute('db') eq 'true'; my $found = 0; Loading @@ -80,20 +95,34 @@ for my $station ( $tree->findnodes('//station') ) { ); } elsif ( $station_by_name{$name} and $station_by_name{$name}{ds100} ne $ds100 and $is_db and $ds100 !~ m{ ^ PQ }x ) and not any { $_->{ds100} eq $ds100 } @{ $station_by_name{$name} } and $is_db ) { printf( "%30s has been recoded: %8s -> %8s\n", $name, $station_by_name{$name}{ds100}, $ds100 ); printf( "%30s has a new DS100 alias: %8s\n", $name, $ds100 ); my $station = { name => $name, ds100 => $ds100, eva => $eva, }; push( @{$stations}, $station ); $station_by_eva{$eva} = $station; $station_by_ds100{$ds100} = $station; push( @{ $station_by_name{$name} }, $station ); } elsif ( $station_by_name{$name} and $station_by_name{$name}{eva} ne $eva and $is_db and $ds100 !~ m{ ^ PQ }x ) and not any { $_->{eva} eq $eva } @{ $station_by_name{$name} } and $is_db ) { printf( "%30s has been recoded: %d -> %d\n", $name, $station_by_name{$name}{eva}, $eva ); printf( "%30s has a new EVA alias: %d\n", $name, $eva ); my $station = { name => $name, ds100 => $ds100, eva => $eva, }; push( @{$stations}, $station ); $station_by_eva{$eva} = $station; $station_by_ds100{$ds100} = $station; push( @{ $station_by_name{$name} }, $station ); } if ( not $found Loading