Perl-скрипт для печати данных XML-файла - PullRequest
1 голос
/ 03 октября 2011

Как напечатать несколько кодов неисправностей и описаний с помощью сценария Perl. У меня есть XML-файл, подобный этому.

 <data>........
        .......
      </data>

, вот у меня больше кодов неисправностей.только код неисправности, как распечатать описание под кодом неисправности.

Ответы [ 3 ]

4 голосов
/ 03 октября 2011

Попробуйте это:

#!/C:/Languages/Perl64/bin/perl.exe

use warnings;
use strict;
use XML::LibXML::Reader;

my $file;
open( $file, 'test.xml' );
my $reader = XML::LibXML::Reader->new( IO => $file ) or die( "unable to open file" );
while ( $reader->nextElement( 'DTC' ) ) {
    my $description = $reader->readOuterXml();
    $reader->nextElement( 'TroubleCode' );
    my $troubleCode = $reader->readInnerXml();
    print( "trouble code: $troubleCode\n" );
    print( " description: $description\n" );
}
close( $file );

Хорошо, исправлено и проверено. Это работает на ваш вопрос.

1 голос
/ 04 октября 2011

Я ответил на тот же вопрос на perlmonks так что, надеюсь, он найдет ответ, который ему нравится.

use XML::Simple;
my $xml = new XML::Simple;

my $data = $xml->XMLin("data.xml");

my %by_code;
foreach my $dtc ( @{ $data->{DTC} } ) {
    push @{ $by_code{ $dtc->{TroubleCode} } }, $dtc;
}

foreach my $code ( sort { $a <=> $b } keys %by_code ) {
    print "trouble code: $code\n";
    print "description:\n";
    print map { $xml->XMLout( $_, RootName => 'DTC', NoAttr => 1, ) }
        @{ $by_code{$code} };
}
0 голосов
/ 03 октября 2011

Вы бы попробовали это:

 print " DTCnumber: \n" . join("\n", @dtcnumber);

и

print " DTCdes: \n" .  join("\n", @dtcdes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...