3

私がこれまでに見つけた唯一のサンプル コードは、古すぎてもう機能しません (廃止されたクラスを使用しています)。必要なのは、次のことを示す基本的なものだけです。

  1. ファイルからの XML の読み込みと解析

  2. SAX イベント ハンドラの定義

  3. イベント ハンドラーに渡された要素の属性またはテキスト値の読み取り

4

3 に答える 3

7

ディストリビューション自体はどうですか?

XML::LibXML の配布ページに移動し、[参照] をクリックします。

ドキュメントの次の注意事項に注意してください。

現時点では、XML::LibXML は、libxml2 のネイティブ SAX 実装への不完全なインターフェースしか提供していません。現在の実装は、実稼働環境ではテストされていません。重大なメモリの問題を引き起こしたり、間違った動作を示したりする可能性があります。

XML::SAXもあり、素敵なドキュメントが付属しています。私はそれを数回使用し、私の目的のためにうまく機能しました。

于 2009-08-25T19:17:51.263 に答える
6

シナンの提案は良かったのですが、すべての点を結び付けることができませんでした。以下は、私がまとめた非常に単純なプログラムです。

ファイル 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};

それは痛かった。

于 2009-08-25T20:41:12.873 に答える
0

XML::LibXML::Saxは Perl SAX インターフェイスを実装しており、素晴らしいドキュメントがあります。

于 2013-11-18T10:54:01.280 に答える