使用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的教程网站,它完全回答了这类问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |