[英]perl script to print xml file data
如何使用perl腳本打印多個故障代碼和說明。我有這樣的xml文件。
<data>........
.......
</data>
像這樣我有更多的故障代碼。仍然現在我只打印故障代碼,我應該如何在故障代碼下面打印說明。
嘗試這個:
#!/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 );
好,更正並測試。 這適用於您的問題。
我回答了關於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} };
}
您可以嘗試以下方法:
print " DTCnumber: \n" . join("\n", @dtcnumber);
和:
print " DTCdes: \n" . join("\n", @dtcdes);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.