私がこれまでに見つけた唯一のサンプル コードは、古すぎてもう機能しません (廃止されたクラスを使用しています)。必要なのは、次のことを示す基本的なものだけです。
ファイルからの XML の読み込みと解析
SAX イベント ハンドラの定義
イベント ハンドラーに渡された要素の属性またはテキスト値の読み取り
私がこれまでに見つけた唯一のサンプル コードは、古すぎてもう機能しません (廃止されたクラスを使用しています)。必要なのは、次のことを示す基本的なものだけです。
ファイルからの XML の読み込みと解析
SAX イベント ハンドラの定義
イベント ハンドラーに渡された要素の属性またはテキスト値の読み取り
ディストリビューション自体はどうですか?
XML::LibXML の配布ページに移動し、[参照] をクリックします。
ドキュメントの次の注意事項に注意してください。
現時点では、XML::LibXML は、libxml2 のネイティブ SAX 実装への不完全なインターフェースしか提供していません。現在の実装は、実稼働環境ではテストされていません。重大なメモリの問題を引き起こしたり、間違った動作を示したりする可能性があります。
シナンの提案は良かったのですが、すべての点を結び付けることができませんでした。以下は、私がまとめた非常に単純なプログラムです。
ファイル 1: ハンドラー (MySAXHandler.pm)
package MySAXHandler;
use base qw(XML::SAX::Base);
sub start_document {
my ($self, $doc) = @_;
# process document start event
}
sub start_element {
my ($self, $el) = @_;
# process element start event
print "Element: " . $el->{LocalName} . "\n";
}
1;
ファイル 2: テスト プログラム (test.pl)
#!/usr/bin/perl
use strict;
use XML::SAX;
use MySAXHandler;
my $parser = XML::SAX::ParserFactory->parser(
Handler => MySAXHandler->new
);
$parser->parse_uri("some-xml-file.xml");
注: 要素属性の値を取得する方法。これは、私が使用できる方法で説明されていませんでした。構文を理解するのに 1 時間以上かかりました。ここにあります。私の XML ファイルでは、属性は ss:Index でした。ss の名前空間の定義は xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" でした。したがって、ばかげた Index 属性を取得するには、次のものが必要でした。
my $ssIndex = $el->{Attributes}{'{urn:schemas-microsoft-com:office:spreadsheet}Index'}{Value};
それは痛かった。
XML::LibXML::Saxは Perl SAX インターフェイスを実装しており、素晴らしいドキュメントがあります。