Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "第2回 2007年4月20日 応用Java (Java/XML)."— Presentation transcript:

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

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

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

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

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

6 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

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

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

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

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

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

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

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

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

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

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

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

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


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

Similar presentations


Ads by Google