これは非常に単純な問題だと思うが、私は多くの検索にもかかわらずそれを理解することはできない。XML :: LibXMLを使用してXMLを解析するPerlスクリプト。
私はこれをCSVファイルに書き込むことができるように、TAG = VALUEと同様のものを印刷するために次のXMLを解析しようとしています。問題は、タグが各サンプルで必ずしも同じではないということです。私は実際のタグ名を取得する方法を把握していないようです。どのような助けも感謝!
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>
- あなたは、あなただけの各<sample>
内部タグを介して実行するために余分なループをタグ名を取得するための右の方法を必要としている
#!/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を置き換えることができます - > findnodes( '*')){' – ikegami
ありがとう、素晴らしい! – lozwell