応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.

Slides:



Advertisements
Similar presentations
応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン.
Advertisements

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日 植田龍男.
オブジェクト指向プログラミング(4) 静的分析(2)
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
~手続き指向からオブジェクト指向へ(Ⅰ)~
Ex7. Search for Vacuum Problem
Ex8. Search for Vacuum Problem(2)
WebサービスII (第10回) 2007年11月28日 植田龍男.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
卒研:データベースチーム 第4回 DOMを使った処理
WebサービスII (第8回) 2007年11月14日 植田龍男.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
第20章 Flyweight ~同じものを共有して無駄をなくす~
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
アプレット プログラミング 第10回 アプレット プログラミング第10回.
アルゴリズムとデータ構造 2011年6月20日
第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).
第8回 2007年6月15日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
WebサービスII (第7回) 2007年11月7日 植田龍男.
第7回 2007年6月8日 応用Java (Java/XML).
第6回 2007年6月1日 応用Java (Java/XML).
第1回 2007年4月13日 応用Java (Java/XML).
Javaによる Webアプリケーション入門 第6回
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
第2回 2007年4月20日 応用Java (Java/XML).
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
2006年11月8日 植田龍男 Webサービス II (第7回) 年11月8日 植田龍男.
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
Javaによる Webアプリケーション入門 第11回
第13回 2007年7月20日 応用Java (Java/XML).
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
Ex7. Search for Vacuum Problem
~let's take fun when you can do it~
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
オブジェクト・プログラミング 第8回.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
オープンソースソフトウェアに対する コーディングパターン分析の適用
Jakarta Struts (1) ソフトウェア特論 第10回.
統合開発環境のための プログラミング言語拡張 フレームワーク
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2012年6月21日
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

応用Java(Java/XML) 第8回 2005年6月9日 植田龍男

前回の復習 DOMの応用 DOMツリー内の検索処理 DOMツリーの編集 ツリーの視覚化 (Swing使用)

検索処理の例(要素名の検索) 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) 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

J2SE 5.0 と XML API javax.xml javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream javax.xml.xpath javax.xml.namespace javax.xml.validation javax.xml.datatype

javax.xml の思想 多数のパーサの実装を統合する枠組み パーサの実装に非依存なアプリケーション 実現のために抽象化されたクラス群を定義 共通の「デザインパターン」

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 );

ここまでやってきたこと XMLパーサ(parser)の概念 パーサの規格(SAX,DOM)

これからの目標 XPath XSLT 名前空間(Namespace) XML文書の妥当性の検証 DTD,XML Schema