第2回 2007年4月20日 応用Java (Java/XML).

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン.
Web サービス II ( 第 13 回 )‏ 2008 年 1 月 9 日 植田龍男. 本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 ‏ Jersey プロジェクト Ver 0.5 による開発.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
シーケンス図の生成のための実行履歴圧縮手法
2006年9月27日 植田龍男 Webサービス II (第1回) 年9月27日 植田龍男.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
東京工科大学 コンピュータサイエンス学部 亀田弘之
JSFによるWebアプリケーション開発 第9回
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
WebサービスII (第10回) 2007年11月28日 植田龍男.
データマイニングのための柔軟なデータ取得、操作を支援するAPIの設計
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
第1回 HTML5入門.
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
卒研:データベースチーム 第4回 DOMを使った処理
JavaとXML 2005年4月14日.
WebサービスII (第8回) 2007年11月14日 植田龍男.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
SGMLについて 2年8組  原口 文晃.
第12回 2007年7月13日 応用Java (Java/XML).
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
ソフトウェア工学 知能情報学部 新田直也.
第10回 2007年6月29日 応用Java (Java/XML).
Webサービス II(第3回) 2007年10月10日.
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用Java (Java/XML).
暗黙的に型付けされる構造体の Java言語への導入
第3回 2007年4月27日 応用Java (Java/XML).
WebサービスII (第7回) 2007年11月7日 植田龍男.
第7回 2007年6月8日 応用Java (Java/XML).
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
第6回 2007年6月1日 応用Java (Java/XML).
第1回 2007年4月13日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
Collection, Generics, Iterator
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Javaによる Webアプリケーション入門 第2回
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
2006年11月8日 植田龍男 Webサービス II (第7回) 年11月8日 植田龍男.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
第13回 2007年7月20日 応用Java (Java/XML).
XML Schema (1) ソフトウェア特論 第3回 /
「XML技術者育成教材」 -XMLエンジニア育成のための実践テキスト-
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
システムエンジニアリング演習 GUIの実現(1):AWT 11月6日.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オープンソースソフトウェアに対する コーディングパターン分析の適用
統合開発環境のための プログラミング言語拡張 フレームワーク
コードクローン解析に基づく デザインパターン適用候補の検出手法
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

第2回 2007年4月20日 応用Java (Java/XML)

この講義の目的(再確認) JavaのアプリケーションでXMLを処理するには? サーバサイドの開発の基礎 Webサービス エンタープライズ・アプリケーション

本日の講義内容 XMLパーサとは? XMLパーサにはどんなものがあるか? XMLパーサとJava SE 6のパッケージ javax.xml.stream のAPI(その1)

XMLパーサとは? XML文書内の字句を解析 要素、属性などの情報を取り出す (アプリケーションが1文字ずつの処理を行う必要はない) <doc> <title> Java and XML </title> <image source=“jax.png” /> </doc>

XMLパーサの種類と使い方 標準のクラスライブラリで提供 (新しくパーサを設計する必要なし) 複数の種類(標準的な処理パターン) SAX(Simple API for XML) DOM(Document Object Model) javax.xml.streamパッケージ

XML処理用パッケージ(1) JAXPパッケージ(J2SDK 1.4よりcore) SAX(Simple API for XML) と DOM DTD、XML Schema:妥当性の検証 名前空間、XPath, XSLTの処理 javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream

XML処理用パッケージ(2) J2SE 5.0 でさらに拡張 XPath, XML Schemaの検証 javax.xml javax.xml.namespace javax.xml.xpath javax.xml.validation javax.xml.datatype

XML処理用パッケージ(3) Java SE 6 でさらにさらに拡張 JAXB, Webサービス、XML電子署名 javax.xml.bind javax.xml.soap javax.xml.stream javax.xml.ws javax.xml.crypto パッケージ数全部で33個も!

本日の講義で用いるのは javax.xml.stream javax.xml.stream.events 次回以降で javax.xml.stream.util SAX, DOM を利用するには javax.xml.parsers

javax.xml.stream のAPI(1) XMLEventReader インタフェース 構文解析を実行(つまりパーサ) java.util.Iterator として扱える =発見した要素などの構成要素の集まり (つまり、処理結果のデータでもある) hasNext()メソッド、 next()メソッド nextEvent()メソッド <doc><title>ABC</title></doc>

javax.xml.stream のAPI(2) XMLInputFactory クラス XMLEventReader のインスタンスを得るための専用のクラス =それ自身は処理を実行するわけではない 会社の「受付係」、「案内係」の役割

Factory の「デザインパターン」 XMLInputFactory factory = XMLInputFactory.newInstance(); XMLEventReader reader = factory.createXMLEventReader( source ); Factoryクラスはまず自分のインスタンスを作る Factoryのインスタンスから実際に処理を行うインスタンスを得る

なぜ Factory のパターンか? 「実装クラス」の実体を隠す(なぜ?) XMLEventReader reader = new XMLEventReader( source ); とはしない XMLEventReader はインタフェース(抽象化) 実装クラスを交換可能 実行環境によって実装クラスが異なる場合にも柔軟に対応

必要なデータの取り出し方 XMLEventReader reader = …..; while( reader.hasNext() ) { XMLEvent event = reader.nextEvent(); System.out.println( event ); } <doc><title>ABC</title></doc>

XMLEvent とその仲間たち XMLEventReader がかかえるデータ javax.xml.stream.events パッケージが提供 XMLEvent が共通のスーパインタフェース StartDocument, EndDocument StartElement, EndElement Characters, Comment Attribute など <doc><title>ABC</title></doc>

XMLEvent の種類の判定 XMLEvent インタフェースに定義された定数 XMLEvent.START_ELEMENT 等 XMLEvent の getEventType() メソッドの返値 使用例) XMLEvent event = reader.nextEvent(); if( event.getEventType() == XMLEvent.START_ELEMENT ) { :

まとめ( javax.xml.stream の処理) XMLInputFactory が自身のデータを作る XMLEventReder が Factoryから得られる その時点で既に処理されたデータと考えて処理できる(=複数のXMLEvent ) hasNext() メソッドと nextEvent()メソッド ループの中で1個ずつイベントを処理 イベントの種類は XMLEvent の定数値で場合分け

2007 年度の開発環境について Linux は ubuntu Linuxの日本語環境は UTF-8 Javaは Java SE 6 (PATHの設定はやり直す必要なし) 講義内容は LMS に http://lms.wakhok.ac.jp/