10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
プログラミング第5回 1 while ループ 文字列の操作
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
社会人学習講座 「Javaプログラミング概論」
第9回 2007年6月22日 応用Java (Java/XML).
事前準備 ttsshでのログイン フォルダ名 XML ファイルコピー  cp ~hurry-go-round/Java/XML/* .
Applet 岡部 祐典 鈴木 敬幸.
プログラミング基礎I(再) 山元進.
とても使いやすい Boost の serialization
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
卒研:データベースチーム 第4回 DOMを使った処理
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
RMI ソフトウェア特論 第6回 /
プログラミング演習3 第2回 GUIの復習.
第12回 2007年7月13日 応用Java (Java/XML).
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
8.1 例外処理 8.2 catchブロックの検索 8.3 throwステートメント 8.4 例外とエラークラス 8.6 独自の例外
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
プログラミング言語入門 手続き型言語としてのJava
UDPマルチキャストチャット                    空川幸司.
独習Java ・ 8.1  例外処理 ・ 8.2  catch ブロックの検索  12月 5日    小笠原 一恵.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第8回 2007年6月15日 応用Java (Java/XML).
暗黙的に型付けされる構造体の Java言語への導入
第3回 2007年4月27日 応用Java (Java/XML).
第7回 2007年6月8日 応用Java (Java/XML).
第6回 2007年6月1日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
暗号技術 ~JAVAプログラム①~ (5週目)
プログラミング演習3 第2回 GUIの復習.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
第2回 2007年4月20日 応用Java (Java/XML).
ソフトウェア制作論 平成30年11月21日.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
ソフトウェア制作論 平成30年11月28日.
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
さまざまなプログラミング言語, オンライン開発環境
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例

XML文書を利用したり操作するための標準化されたインターフェイス SAXの概要(1) XML文書を利用したり操作するための標準化されたインターフェイス DOMはXML文書全体をメモ リにロードする必要がある SAXはドキュメントを読み込 みながら処理を行う *SAXは反応が早く、メモリ消費量の少ないプログラムを作成  することが可能 *ネットワークを介してドキュメントを読み込みながら作業がで  きる

SAXの概要(2) 実際のプログラミングでは、SAXをサポートするXMLパーサーを使用 SAX1 Perserオブジェクトを使ってXML文書を解析する インターフェイスを定義する SAX2 XMLReaderを使ってXML文書を解析するインターフェイスを定義する SAX2- Extension 拡張ハンドラ(Lexicalhandler、DEClHandler)

SAXの利用上の注意点 イベント処理型プログラミング ドキュメントの変更と新規作成 SAXでXML文書やHTML文書を変更した トを発生させ、イベントを処理することでド キュメントにアクセスしたり操作したりする SAXでXML文書やHTML文書を変更した り生成したりするとき フィルターのように結果を随時出力する 生成したり変更するドキュメントの内容を メモリ上に保存するデータ構造を独自に 作る ドキュメントの生成部分にDOMを利用す る必要がある イベント処理型のプログラミングが必要 適切でない時 DOMを使用する

SAXプログラミングの基礎 イベントとイベントハンドラ(1)  ドキュメントを読み込みながら、ドキュメントの開始と終了、要素(エレメント)の開始と終了、エラーなどのイベントを検出すし、プログラムに通知する プログラムでは、処理したいイベントごとにイベントハンドラを作 成して、そのイベントハンドラでイベントを処理する パーサーのイベントハンドラにはインターフェイスを介してアクセ スするので、処理したいイベントにアクセスするためのインター フェイスを実装するクラスを作り、そこにイベントハンドラで実行 したいことをプログラムコードで記述する

SAXイベントハンドラのインターフェイス 主なイベントハンドラ イベントハンドラ 説明 characters 要素の中のキャラクタデータを受け取ったことを通知する startDocument ドキュメントの開始を通知する startElement 要素の開始を通知する SAXイベントハンドラのインターフェイス インターフェイス 機能 contentHandler XML文書の内容にアクセスするためのSAXのメインインターフェイス ErrorHandler エラーイベントを実装するためのインターフェイス DTDHandler DTDのイベントを実装するためのインターフェイス

イベントとイベントハンドラ(2) 基本的に必要な作業はこれだけ!! (SAXでXML文書を読み込んで解析するための通常作業)       基本的に必要な作業はこれだけ!!  (SAXでXML文書を読み込んで解析するための通常作業) 処理したいイベントのイベントハンドラを記述する SAXパーサーオブジェクトを作成する イベントハンドラを登録する Parse()メソッドを呼び出す

JavaのDefaultHandlerクラスを拡張してクラスを定義する方法 SAXのプログラム例 クラスの定義 XML文書を読み込んだときに発生するSAXのイベントをイベント ハンドラで処理するために、イベントハンドラを実装するクラスを 最初に作成する必要がある JavaのDefaultHandlerクラスを拡張してクラスを定義する方法 public class SAXParse extends org.xml.sa.helpers.DefaultHandler { // クラスの定義 }

イベントの処理 ・ドキュメントを読み込み始めたときのイベントを処理するイベントハンドラ public void startDocument () { System.out.println("Start document"); } ・ドキュメントをすべて読み込み終わったときのイベントを処理するイベントハンドラ public void endDocument () System.out.println("End document");

要素を読み込み始めたときのイベントを処理するstartElementイベントハンドラ作成の例 public void startElement (String uri, String name, String qName, Attributes atts) { // 要素を表示する System.out.print("Start element:uri=" + uri); System.out.println(" name=" + name + "qName="+qName); // 属性値の数を取得する int 1 = atts.getLength(); if (1 > 0) System.out.println(" Attr"); // 各属性を表示する for (int i=0; i<1; i++) String LocalName = atts.getLocalName(i); String QName = atts.getQName(i); String pName = atts.getValue(i); System.out.print(" LocalName=" + LocalName); System.out.println(" QName=" + QName + " pName=" +pName); }

キャラクタイベントを抽出するコードの例 public void characters (char ch[], int start, int length) { System.out.print("Characters:["); for (int i = start; i < start + length; i++){ switch (ch[i]) { case '\n': System.out.print("\\n"); break; default: System.out.print(ch[i]); } System.out.println("]");

XML文書のパース(1) イベントハンドラを記述してクラス全体を定義したら、必要に応じてイベントハンドラを呼び出してXML文書をパースする例 public void parseXML(String urlString) throws Exception { SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); ParserAdapter pa = new ParserAdapter(sp.getParser()); pa.setContentHandler(this); pa.parse(urlString); }

XML文書のパース(2) import javax.xml.parser.*; public class SAXparse extends org.xml.sax.helpers.DefaultHandler{ public static void main(String[] args) { try { SAXParse us = new SAXParse(); us.parseXML(args[0]); } catch (Throwable t) { t.printStackTrace();

宿題 P216~のSAXプログラムのサンプルをやってみてください