使用XML :: LibXML解析XML的Perl脚本;
发布时间:2020-12-16 07:51:14 所属栏目:百科 来源:网络整理
导读:我认为这是一个非常简单的问题,但尽管进行了大量搜索,但我无法弄明白. 我正在尝试解析以下XML以打印类似于TAG = VALUE的内容,以便我可以将其写入CSV文件.问题是每个样本的标签并不总是相同.我似乎无法弄清楚如何获得实际的标签名称.任何帮助赞赏! XML文件
|
我认为这是一个非常简单的问题,但尽管进行了大量搜索,但我无法弄明白.
我正在尝试解析以下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";
}
您有正确的方法来获取标记名称,您只需要一个额外的循环来遍历每个< sample>内的标记:
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $filename = "data.xml";
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);
for my $sample ($xmldoc->findnodes('/Statistics/Stats/Sample')) {
for my $property ($sample->findnodes('./*')) {
print $property->nodeName(),$property->textContent(),"n";
}
print "n";
}
编辑:我现在已经创建了一个名为Perl XML::LibXML by Example的教程网站,它完全回答了这类问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
