Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
hasegawa
453 views
Cocoa Pro08
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 25
2
/ 25
3
/ 25
4
/ 25
5
/ 25
6
/ 25
7
/ 25
8
/ 25
9
/ 25
10
/ 25
11
/ 25
12
/ 25
13
/ 25
14
/ 25
15
/ 25
16
/ 25
17
/ 25
18
/ 25
19
/ 25
20
/ 25
21
/ 25
22
/ 25
23
/ 25
24
/ 25
25
/ 25
More Related Content
PPT
『RESTful Web サービス』読書会 第4回 9章 説明資料
by
Siena. N
PDF
Objc02
by
hasegawa
PDF
Objc04
by
hasegawa
PDF
Cocoa Pro07
by
hasegawa
PDF
Cocoa Pro01
by
hasegawa
PDF
Pd millora les tteves fotos amb picassa
by
omnia valls
ODP
Oussama
by
omnia valls
PDF
Pd com contractar el servei d'internet
by
omnia valls
『RESTful Web サービス』読書会 第4回 9章 説明資料
by
Siena. N
Objc02
by
hasegawa
Objc04
by
hasegawa
Cocoa Pro07
by
hasegawa
Cocoa Pro01
by
hasegawa
Pd millora les tteves fotos amb picassa
by
omnia valls
Oussama
by
omnia valls
Pd com contractar el servei d'internet
by
omnia valls
More from hasegawa
PDF
Midterm2nd
by
hasegawa
PDF
Objc03 1
by
hasegawa
PDF
Objc05
by
hasegawa
PDF
Objc03 2
by
hasegawa
PDF
Objc01
by
hasegawa
PDF
Cocoa Pro09
by
hasegawa
PDF
Cocoa Pro6
by
hasegawa
PDF
Cocoa Pro5
by
hasegawa
PDF
Cocoa Pro4
by
hasegawa
PDF
Cocoa Pro03
by
hasegawa
PDF
CocoaPro02
by
hasegawa
Midterm2nd
by
hasegawa
Objc03 1
by
hasegawa
Objc05
by
hasegawa
Objc03 2
by
hasegawa
Objc01
by
hasegawa
Cocoa Pro09
by
hasegawa
Cocoa Pro6
by
hasegawa
Cocoa Pro5
by
hasegawa
Cocoa Pro4
by
hasegawa
Cocoa Pro03
by
hasegawa
CocoaPro02
by
hasegawa
Cocoa Pro08
1.
iPhone輪講第8回 Lesson15
2.
Lesson15 XMLとRSS
3.
XML XMLとは HTMLのようにタグを使ってマーク付けする言語を マークアップ言語(Markup Language)と呼ぶ XMLもタグによるマークアップ言語のひとつ HTMLはWebページ専用にデザインされているが,XMLは色々なものに 利用できるように設計されている なので拡張可能なマークアップ言語(eXtensible Markup
Language) で,XML
4.
DOMパーサ DOM(Document Object Model)パーサ XMLがもつ構造をそのままプログラムから操作できるようにしたもの XMLのタグ同士の階層関係の事を木構造と呼ぶ 木構造を直接操作できるのがDOMパーサ rss link channel title http://...ホットニュース <rss> <channel> <title> ホットニュース </title> <link> http://... </link> </channel> </rss>
5.
SAXパーサ SAX(Simple API for
XML)パーサ XMLドキュメントを上から読み上げるように処理する RSSファイル読み上げてみる 『まずrssのタグが来た,次にchannnelのタグが来た,titleのタグが来た, タイトルのテキストがこれで,titleのタグが終わった…』と, タグのはじめと終わり,その間に挟まってテキストを順次レポートする
6.
SAXパーサ 何かを読むたびにレポートが上がってくるので, 「イベント駆動型パーサ」とも呼ばれる <rss> <channel> <title> ホットニュース </title> <link> http://... </link> </channel> </rss> start rss start channel start
title text ホットニュース end title start link text http://... end link end channel end rss
7.
木構造 DOMタイプのパーサを使う場合 ポイントとなるのが木構造 木構造は木のような格好をしている構造 根(root),幹(trunk),葉(leaf) がある 特に根の事はルートと呼ぶ事が多い 根(root) 幹(trunk) 葉(leaf)
8.
木構造 根や幹や葉の事をまとめてノード (node)と呼ぶ 木構造ではノード同士の関係も重要 自分よりも上(ルートに近い方)にあ るノードを親(parent), 下にあるのが子(child) 隣の(同じ親を持っている)ノードの ことは兄弟(sibling) 親(parent) 子(child) 兄弟(sibling)
9.
木構造 子になるノードは複数いる可能性があ る.それに対して親ノードは1つだけ 子の数は0以上で,親の数は 常に1となる ルートノードは例外で,親がいない 親(parent) 子(child) 兄弟(sibling)
10.
CocoaのXMLパーサ NSXMLDocument,NSXMLNode,NSXMLElement CocoaのXML関係のクラスは,まとめて「NSXMLクラス」と呼ぶ NSXMLクラスにはDOMパーサと,SAXパーサのためのものが含まれる
11.
DOMパーサのためのNSXMLクラス これらのうちでよく使われるのが NSXMLDocument NSXMLNode NSXMLElement NSXMLDTDとNSXMLDTDNodeは XMLドキュメントを定義するDTDと いう使用をサポートするのに使う DTD(Document Type Definiton)は,XMLドキュメント で使われるタグを定義する NSObject NSXMLDocument NSXMLNode NSXMLElement NSXMLDTD NSXMLDTDNode
12.
SAXパーサのためのNSXMLクラス SAXパーサのためのクラスは NSXParser NSObject NSXMLNode
13.
XMLドキュメントのパース XMLドキュメントをパースする パースにはNSXMLDocumentクラスを使う 以下の初期化メソッドを使うとパースが始まる NSDocument - (id)initWithContentsOfURL:(NSURL*)url options:(unsigned
int)mask error:(NSError**)error XMLドキュメントのURLと,オプションmaskを指定してパースする - (id)initWithData:(NSData*)data options:(unsigned int)mask error:(NSError**)error XMLドキュメントのデータdataと,オプションmaskを指定してパースする - (id)initWithXMLString:(NSString*)string options:(unsigned int)mask error:(NSError**)error XMLドキュメントの文字列stringと,オプションmaskを指定してパースする
14.
XMLドキュメントのパース XMLドキュメントをパースする オプションには以下の値を指定できる NSXMLDocumentTidyXMLを使うと,HTMLもXMLのようにパースできる これができるとHTMLのタグで木構造で扱える 定数 説明 NSXMLDocumentTidyHTML HTMLをXHTMLとして解釈してパースする NSXMLDocumentTidyXML
不正なXMLを正式なXMLに変換してパースする NSXMLDocumentValidata DTDかXML Schemaを使ってXMLドキュメントを検証する NSXMLDocumentXInclude Xincludeで指定されているドキュメントを読み込む
15.
XPath XMLドキュメントをパースしたら次はそこから ノードを取り出す ノードを取り出すもっとも単純な方法は親子関係を辿って行く事 まずルートノードを取得して,その子を取り出して,さらにその子を取り出 して…を繰り返して行く
16.
XPath RSSのタイトルを取り出すとする rssノードの下の,channelノードの下の titleノードが含むテキストファイル /rss/channel/titleと書いたら わかりやすい rss title channel link description /rss/channel/title
17.
XPath XMLではあるノードの位置をパスとして書き出す規格として Xpathと呼ばれるものがある NSXMLにもXPathを指定してノードを取得する nondesForXpath:errorというメソッドがある NSXMLNode - (NSArray*)nodesForXPath:(NSString*)xpath error:(NSError**)error Xpathを指定して,ノードを取得する
18.
ノードの情報 ノードを取得したら,そのノードに関するいろいろな情報を取得する NSXMLNode - (NSXMLNodeKind)kind ノードの種類を取得する用意されている種類は,NSXMLInvalidKind, NSXMLDocumentKind, NSXMLCommentKind,
NSXMLTextKind, NSXMLDTDKind, NSXMLEntityDeclarationKind, NSXMLAttributrDeclarationKind, NSXMLElementDeclarationKind, NSXMLNotationDeclarationKind - (NSString*)name ノードの名前を取得します - (NSString*)stringValue このノードが含む,テキストを取得します - (NSString*)XMLString このノードのXMLドキュメントでの表示を取得する.自分自身のタグも含む
19.
これらのメソッドから何が取得でき るのか 次のようなXMLを考える これをパースするとtitleのタグと,その 下にテキストノードとが出来上がる titleノードからメソッドを使って情報を 取得する <title>楽しいCocoa</title> メソッド 得られる情報 kind NSXMLElementKind name
title stringValue 楽しいCocoa XMLString <title>楽しいCocoa</title>
20.
ノードの親子関係 あるノードから親,子,兄弟といった関係にあるノードを取得する事ができる NSXMLNode - (NSXMLNode*)parent 親ノードを取得する - (unsigned
int)childCount 子ノードの数を取得する - (NSArray*)children 子ノードを配列の形で取得する - (NSXMLNode*)childAtIndex:(unsigned int)index インデックスindexで指定した子ノードを取得する - (NSXMLNode*)previousSibling 1つ前にある兄弟ノードを取得する - (NSXMLNode*)nextSibling 1つ次にある兄弟ノードを取得する
21.
ノードの親子関係 previousSibling parent childAtIndex: nextSibling children childCount
22.
XMLドキュメントの関係 それぞれのノードからはそのノードが属しているNSXMLDocumentのインス タンスを取得する事ができる NSXMLDocumentからはルートノードを取得できる NSXMLNode - (NSXMLDocument*)rootDocument このノードを含むNSXMLDocumentのインスタンスを取得する NSXMLDocument - (NSXMLElement*)rootElement このドキュメントのルートノードを取得する
23.
属性値の取得 XMLではタグの中に値を指定する事ができる これを属性と呼ぶ type = string
というところが属性 typeのところを属性名, string のことを属性値と呼ぶ <title type = string > </title>
24.
属性値の取得 ノードから属性を取得するメソッドはNSXMLElementにある どちらも取得できるのはノードである事に注意 これは属性ノードになる NSXMLElement - (NSXMLNode*)attributeForName:(NSSring*)name 名前nameで指定した属性ノードに取得します - (NSArray*)attributes 属性ノードの配列を取得します
25.
おわり
Download