目次:
ビデオ: 第01集:Android使用sax解析xml [Android解析XML文件] [老罗Android开发视频教程] 2024
イベント という単語はすべての種類の画像を作成します。プログラマーでない人にとって、イベントはちょうど「起こること」です。 「Javaのウィンドウとフレームを扱うのに慣れていたのなら、おそらくイベントはコードを起こすオカレンスと考えているでしょう。例えば、ユーザのマウスクリックまたはキーストロークは、オプションを設定するコードを起動させ、OKボックスを表示する。クリックまたはキーストローク自体は、実行中のプログラムとは独立して発生するため、 イベント と呼ばれます。ユーザーは、そのボタンをいつ押すかを知っているだけです。ボタンが押されると、Javaプログラムの一部が起動し、状況を処理します。このシナリオは イベント駆動型プログラミング と呼ばれます。
<! - 1 - >イベント駆動型プログラミング
SAXプログラムはイベント駆動型 です。たとえば、あなたはおやすみのために寝る。あなたは目覚まし時計を設定して解決し、目を閉じ、何時間も無意識になってしまいます。その後、重要なイベントが発生します。特定の時刻が到着します。イベントが発生すると、目覚まし時計は "目を覚ます"モードに入り、あなたの安らかな眠りの中からあなたをびっくりさせます。 <! - 2 - >
別のシナリオがあります。あなたは忙しい幹部です。あなたは数時間外出しますが、重要なビジネスを見逃したくはありません。事務所を出る前に、あなたのアシスタントに、「重要なことがあれば私に電話してください。 「この注文を発行することは、目覚まし時計を設定することと似ています。あなたのアシスタント(あなたの目覚まし時計)に、イベントが起こったときに目を覚ますように指示しています。あなたのアシスタント(または目覚まし時計)にこの要求をすることは、登録 と呼ばれます。いずれのシナリオでも、起床サービスを登録しています。登録した後は、何かイベントが発生するまで、すべての実際のビジネスを無視して、ゆっくりと非活動を追いかけることができます。それで… <! - 3 - >
リング、リング。あなたの携帯電話があなたに腹を立てています。 "こんにちは? " "こんにちは。これはあなたの助手です。私は第1四半期の売上高があります。彼らは100万人、400万人、200万人です。 "
"見てみましょう。それは合計700万です」と、あなたは言う。 「私はPalmPilotでメモします。ありがとう。 "あなたは電話を切る。
しばらくしてもう一度電話します。 Big Bigs社の社長は、この契約を締結したいと考えている。彼らは1000万ドルを話している。 "
<! - 1 - >
"うーん、"あなたは応えます。 "それは私たちの年初来の収入を最大17メガバックスにするでしょう。その情報をスプレッドシートアプリケーションに保存します。お電話ありがとう。 "これらの相互作用のそれぞれは、
コールバック として知られています。その日の早いうちに、アシスタントにあなたの希望を登録したときにコールバックをリクエストしました。その後、イベントが発生するたびに、アシスタントはコールバックを作成してイベントについて通知します。 Javaプログラミングの用語では、アシスタントは多くのメソッド(Javaサブプログラムの1つ)を呼び出します。 <!イベント駆動型プログラミングの本質
イベント駆動型プログラミングには、登録:
の3つの部分があります。この願い事には別のコード、別のオブジェクト、通常はインポートしたオブジェクト(他のAPIの一部であるコードなど)を登録します。このオブジェクトは、シーンの背後から、指定したイベントの発生を監視します。
- コールバック: 他のコードがコールバックを実行します。あなたのメソッドの1つが呼び出されます。
- 2種類のコード
アクティブなコードと
パッシブ コードを区別すると便利です。 アクティブコードには主な方法があります。 アクティブなコードは、実行を開始すると中心的な段階に入ります。アクティブなコードには、ボールゲーム全体を制御する実行スレッドが含まれています。 受動コードがそこに座って呼び出されるのを待っています。
- パッシブダイスクラスは、他のコードがダイスを呼び出すまでは何もしません。ロール()。 パッシブコードはイベントドリブンプログラミングに必要なものだと思うかもしれませんが、そうではありません。イベント処理のためには、この登録ステップが必要です。パッシブコードは、他のコードとの登録によって開始されます。
- この登録概念を確立するために、マウス、ウィンドウ、ボタンの画面上の世界の例を考えてみましょう。ウィンドウまたはフレームを作成します。フレームがマウスクリックに反応するようにするには、次のコマンドを発行します: ボタン。 addMouseListener(this);
このコマンドは、フレームにボタンを登録します。実際には、マウスイベントが発生するたびに、フレームのマウス処理メソッド
の1つを呼び出します。後で、ユーザーがマウスをクリックすると、フレームがコールバックを取得します。コンピュータは、フレームのmouseClickedメソッドを呼び出します。
SAXイベント
もちろん、SAXはイベント駆動型ですが、これはSAXプログラムがマウスクリックを待つことを意味するものではありません。代わりに、SAXコードは、最後のいくつかの段落で説明されているregister-event-callbackモデルに従います。すべてのSAXプログラムには、2つの不可欠なコードがあります。 書くコード - ハンドラー
と呼ばれます。
(あなたのハンドラは、あらかじめ書かれたDefaultHandlerクラスを拡張することができます。)
- ハンドラは、前のセクションの百万ドルの役員のようです。 あなたが通常書いていないコード - パーサ 。 パーサは役員のアシスタントの役割と同じ役割を果たす。 Java 1.4 APIにはパーサが組み込まれています。このパーサの
- インスタンス を作成し、ハンドラをそのパーサインスタンスに登録します。実際には、イベントが発生するたびにハンドラをコールバックするようにインスタンスに指示します。 XMLに関連することはすべて新しいものであり、まだ流動的な状態にあります。このため、用語はいくつかの特有の方法で一緒にパッチされています。 SAXバージョン2を開発している間に、一部の技術者はメークアップ・ニュー・ネーム・フェスティバルを開催しました。通常「パーサ」と呼ばれるものは、XMLReaderという名前のJavaインターフェイスに実装されています。以前はorgという名前のクラスがありました。 xml。サックス。パーサーですが、クラスは 廃止されました (これはあなたの靴の底から剥がすべきです)。物事をもう少し複雑にするために、さらに別の解析ツールjavaxがあります。 xml。パーサー。 SAXParser。このSAXParserを使用して、自分自身をXMLReaderにします。運があれば、すぐにこの複雑な用語に慣れることができます。今のところ、 "パーサ"と呼ばれるものは通常、XMLReaderのインスタンスです。 レジスタとコールバックのシナリオは、SAXをイベント駆動型にするものです。今面白いのは、SAXイベントは具体的ではないということです。 SAXイベントは、キーストロークまたはボタンクリックを思い出させません。 SAXでは、パーサーは上から下へXML文書をスキャンします。パーザは何か興味深いものがあれば、イベントを発生させてハンドラを呼び出します。そして、この面白い出会いについて何かをするのは、ハンドラに任されています。