使用sax的perl解析

使用sax的perl解析,perl,Perl,我想用Perl编写一个xml解析脚本,使用模块从以下xml文件打印所有firstname值 约翰 雌鹿 游戏打得好 操作 100 拉里 页 45 账户 200 骚扰 陶工 50 人力资源 300 有人能帮我看一下示例脚本吗? 我是Perl新手。您有什么理由坚持使用XML::Sax;如果没有,那么您可能可以在Perl中寻找其他一些XML解析器(XML::Twig、XML::LibXML、XML::LibXMLReader、XML::Simple)等等 下面是使用XML::Twig检索名字的示例

我想用Perl编写一个xml解析脚本,使用模块从以下xml文件打印所有
firstname


约翰
雌鹿
游戏打得好
操作
100
拉里
页
45
账户
200
骚扰
陶工
50
人力资源
300
有人能帮我看一下示例脚本吗?

我是Perl新手。

您有什么理由坚持使用XML::Sax;如果没有,那么您可能可以在Perl中寻找其他一些XML解析器(XML::Twig、XML::LibXML、XML::LibXMLReader、XML::Simple)等等

下面是使用XML::Twig检索名字的示例代码

use XML::Twig;

my $twig = XML::Twig->new ();
$twig->parsefile ('sample.xml');

my @firstname = map { $_->text } $twig->findnodes ('//firstname');

下面是一个使用
XML::SAX
的示例。我使用了
XML::SAX::PurePerl

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use XML::SAX::ParserFactory;
use XML::SAX::PurePerl;

my $characters;
my @firstnames;

my $factory = new XML::SAX::ParserFactory;
#Let's see which handlers we have available
#print Dumper $factory;
my $handler = new XML::SAX::PurePerl;
my $parser = $factory->parser(
              Handler => $handler,
              Methods => {
                  characters => sub {
                      $characters = shift->{Data};
                  },
                  end_element => sub {
                      push @firstnames, $characters if shift->{LocalName} eq 'firstname';
                  }
              }
          );

$parser->parse_uri("sample.xml");
print Dumper \@firstnames;
输出:

$VAR1 = [
          'John',
          'Larry',
          'Harry'
        ];

我使用
$characters
保存字符数据,每当我看到结束名标记时,就将其内容推到
@firstnames
上。

我尝试过这个方法,但不知道如何打印节点值。使用XML::SAX::ParserFactory;使用XML::SAX::Writer;my$writer=XML::SAX::writer->new;我的$parser=XML::SAX::ParserFactory->parser(Handler=>$writer);eval{$parser->parse_文件('sample.xml')};如果$@,则die“无法解析Lizzie的股票文件:$@”;嗨,谢谢你的回复。我还有一个问题。如何在SAX中处理重复的元素名?下面是我的xml文件。John gg Operations 100 xyz Larry Page 45 Accounts 200 abc我的问题是如何访问元素employee->employee->company->name?我问这个问题的原因是因为在employees->employees->name中还有一个“name”元素,我想跳过它。请帮忙。谢谢。