Download presentation
Presentation is loading. Please wait.
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 に
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.