第8回 2007年6月15日 応用Java (Java/XML).

Slides:



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

応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン.
応用 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日 植田龍男.
社会人学習講座 「Javaプログラミング概論」
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
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日 植田龍男.
Java I 第2回 (4/18)
オブジェクト指向プログラミング(4) 静的分析(2)
Applet 岡部 祐典 鈴木 敬幸.
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
Ex8. Search for Vacuum Problem(2)
JSFによるWebアプリケーション開発 第11回
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
卒研:データベースチーム 第4回 DOMを使った処理
WebサービスII (第8回) 2007年11月14日 植田龍男.
第20章 Flyweight ~同じものを共有して無駄をなくす~
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
Bridge Pattern
アプレット プログラミング 第10回 アプレット プログラミング第10回.
アルゴリズムとデータ構造 2011年6月20日
RMI ソフトウェア特論 第6回 /
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
~手続き指向からオブジェクト指向へ[Ⅱ]~
第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日.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
第11回 2007年7月6日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
第7回 2007年6月8日 応用Java (Java/XML).
第6回 2007年6月1日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Jakarta Struts (2) ソフトウェア特論 第11回.
第2回 2007年4月20日 応用Java (Java/XML).
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
Javaによる Webアプリケーション入門 第11回
第13回 2007年7月20日 応用Java (Java/XML).
アルゴリズムとデータ構造 2010年6月21日
ソフトウェア制作論 平成30年11月21日.
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
「XML技術者育成教材」 -XMLエンジニア育成のための実践テキスト-
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
~let's take fun when you can do it~
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
Servlet データベース論 第6回.
オブジェクト・プログラミング 第8回.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
オープンソースソフトウェアに対する コーディングパターン分析の適用
JAVA入門⑥ クラスとインスタンス.
アルゴリズムとデータ構造 2012年6月21日
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

第8回 2007年6月15日 応用Java (Java/XML)

前回までやったこと 「XMLパーサ」-- Java でXMLを処理 javax.xml.stream パッケージのパーサ SAX(Simple API for XML) のパーサ DOM(Document Object Model)のパーサ 応用(1) – テーブルの利用 「要素の出現回数を調べる」 応用(2) – フィルタ的な処理 応用(3) – DOMツリーの検索 応用(4) – DOMツリーの視覚化

本日(6/15)の講義内容 検索機能の強化と効率化 XPath の利用 XPath のパッケージとAPI javax.xml.xpath

復習)パーサの取得のパターン DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder();

XML文書の構造の例 <document> <title>Java and XML</title> Let's begin, now! <image source="java.png" width="512" height="400"/> </document>

DOMツリーによる表現

検索処理の例(要素名の検索) public void search( Node node ) { if( node.getNodeName().equals(“A”) ) print( node ); NodeList list = node.getChildNodes(); if( list.getLength() == 0 ) return; for( int i=0; i<list.getLength(); i++ ) { search( list.item(i)); }

少し複雑な場合(属性の検索 1) public void search( Node node, String name ) { if( node.getNodeType() == Node.ELEMENT_NODE ) { Attr attr = searchAttr( node, name ); if( attr != null ) printFullName( node, attr ); } NodeList list = node.getChildNodes(); if( list.getLength() == 0 ) return; for( int i=0; i<list.getLength(); i++ ) { search( list.item(i), name ); } }

少し複雑な場合(属性の検索 2) public Attr searchAttr( Node node, String name ) { NamedNodeMap nnp = node.getAttributes(); for( int i=0; i<nnp.getLength(); i++ ) { Node n = nnp.item( i ); if( n.getNodeType() == Node.ATTRIBUTE_NODE ) { Attr a = (Attr)n; if( a.getName().equals( name ) ) return a; } } return null; }

DOMの検索プログラムの問題点 検索パターンは複雑 そのすべてに対応するプログラムも複雑 何か手助けはないか? みんなが利用できる「標準」の方法が望ましい => XPath

XPath とは? XML文書のノードの位置を指定 検索の強力な手段 XSLT Xindice

XPath の検索パターン(1) abc child::text() child::* preceding-sibling::abc child::abc abc child::text() child::* preceding-sibling::abc following-sibling::abc attribute::xyz

XPath の検索パターン(2) child::*/child::abc ancestor::abc decendant::abc

XPath の検索パターン(3) child::abc[position()=1] child::abc[attribute::xyz]

XPath の検索パターン(4) abc //abc abc[1] @xyz

javax.xml.xpath 実装に依存しない XPathの処理 XPath インターフェイス 検索の処理のメソッドを定義 XPathFactory クラス XPathConstants などのクラス

参考:パーサの取得のパターン DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder();

XPathの取得 import javax.xml.xpath.*; : XPathFactory xpf = XPathFactory.newInstance(); XPath xpath = xpf.newXPath();

evaluate() メソッドの4パターン 対象となるノード Imputsource(XML文書) Node(文書の一部) 返り値:単純なString or 特定のデータ型(Object)

evaluate() メソッドの役割(1) 必要な型のデータを受け取る Document document = db.parse( new InputSource( "sample3.xml" ); NodeList list = (NodeList)xpath.evaluate( "//ABC" , document, XPathConstants.NODESET );

evaluate() メソッドの役割(2) 必要な型のデータを受け取る double d = (Double)xpath.evaluate( "//image/@width", new InputSource( "sample3.xml" ), XPathConstants.NUMBER );