我認爲這是一個非常簡單的問題,但儘管進行了很多搜索,我仍無法弄清楚。使用XML :: LibXML解析XML的Perl腳本;
我想解析下面的XML來打印類似於TAG = VALUE的東西,以便我可以將其寫入CSV文件。問題是每個樣本的標籤並不總是相同的。我似乎無法弄清楚如何得到實際的標籤名稱。任何幫助讚賞!
XML文件 -
<Statistics>
<Stats>
<Sample>
<Name>System1</Name>
<Type>IBM</Type>
<Memory>2GB</Memory>
<StartTime>2012-04-26T14:30:01Z</StartTime>
<EndTime>2012-04-26T14:45:01Z</EndTime>
</Sample>
<Sample>
<Name>System2</Name>
<Type>Intel</Type>
<Disks>2</Disks>
<StartTime>2012-04-26T15:30:01Z</StartTime>
<EndTime>2012-04-26T15:45:01Z</EndTime>
<Video>1</Video>
</Sample>
</Stats>
</Statistics>
腳本 -
#!/usr/bin/perl
use XML::LibXML;
$filename = "data.xml";
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);
for my $sample ($xmldoc->findnodes('/Statistics/Stats/Sample')) {
print $sample->nodeName(), ": ", $sample->textContent(), "\n";
}
線3 + 4 + 6可以替換爲:'的foreach我的$的孩子($樣本 - > findnodes('*')){' – ikegami
謝謝,真棒! – lozwell