私が今までに見つけた唯一のコード例は、それほど古いものではなくなりました(廃止されたクラスを使用します)。SAXを使用してXMLを解析するには、XML :: LibXMLを使用するにはどうすればよいですか?
ロードとの属性またはテキスト値を読み込みSAXイベントハンドラ(S)
の定義ファイル
からXMLをパース:私は必要なのは実証し、基本的なものですイベントハンドラに渡される要素
私が今までに見つけた唯一のコード例は、それほど古いものではなくなりました(廃止されたクラスを使用します)。SAXを使用してXMLを解析するには、XML :: LibXMLを使用するにはどうすればよいですか?
ロードとの属性またはテキスト値を読み込みSAXイベントハンドラ(S)
の定義ファイル
からXMLをパース:私は必要なのは実証し、基本的なものですイベントハンドラに渡される要素
How about the distribution itself?
XML::LibXML distribution pageにアクセスし、browseをクリックします。
注documentationに以下の注意:モーメントXMLで
::のlibxmlはlibxml2ののネイティブSAXの実装にのみ、不完全なインタフェースを提供します。現在の実装は、実稼働環境ではテストされていません。重大なメモリの問題を引き起こすか、または間違った動作を示すことがあります。
には、nice documentationが付属しています。私はそれを数回使用し、私の目的のためにうまくいった。
シアンの提案は良かったが、すべての点を結びつけていなかった。
ファイル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"でした。したがって、愚かなインデックス属性を取得するには、私はこれが必要でした:
my $ssIndex = $el->{Attributes}{'{urn:schemas-microsoft-com:office:spreadsheet}Index'}{Value};
それは痛いです。
XML :: LibXML :: Saxはthe Perl SAX interfaceを実装しています。いいドキュメントがあります。
ありがとうございました。私は前にブラウズリンクに気付かなかった。しかし、私はあなたが引用した警告を見ました。別のPerl SAXパーサーをお勧めしますか?私は気難しくない。それは大きなファイルではありませんが、私はExcelによる疎なデータ出力を読み込んでいるため、この問題のイベントドリブンアプローチを好んでいます。 –
XML :: SAXのドキュメントは分かりやすいように見えます。あなたは私の投票を得る。 –
@Paulありがとうございます。 –