Slideshow transcript
Slide 1: ちょっと極めるXML on PHP5 id:sotarok Sotaro KARASAWA sotaro.k@gmail.com Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 2: あいかわらず遅刻しててすみません 別に世の中なめてるわけじゃ>< Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 3: Agenda 自己紹介 PHP5 の XML の機能を紹介 SimpleXMLを調理する もっとSimpleXMLを使う もっとXML Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 4: 自己紹介 id:sotarok そーたろー kはおまけ Django の D みたいなもん Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 5: このアイコンにピンときたら twitter.com/sotarok d.hatena.ne.jp/sotarok その他 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 6: 自己紹介 PHPカンファレンス2008 7/21 は です! みんなきてね! Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 7: PHP5 の XML の機能 XMLって知ってますよね? <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 8: これまでのPHP xmlparser PEAR Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 9: PHP5では XMLを扱う機能が 大幅に強化されています Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 10: 詳しくは@IT http://www.atmarkit.co.jp/flinux/rensai/p hp502/php502a.html by yudoufu Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 11: これぞ まるなげPHP! Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 12: という冗談はおいといて Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 13: PHP5 の XML を扱う機能 SimpleXML XMLReader/Writer DOMDocument SDO XSL … Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 14: まぁこんなにあっても しょうがないので Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 15: とりあえず SimpleXML Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 16: SimpleXMLを調理する Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 17: インスタンスの生成 文字列から simplexml_load_string($some_string); new SimpleXMLElement($some_string); ファイル・URLから simplexml_load_file($some_file); new SimpleXMLElement($some_file, null, true); Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 18: 要素へのアクセス $xml->channel <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0“ xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 19: 要素へのアクセス $xml->channel->title <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0“ xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 20: 要素へのアクセス $xml->channel->link <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0“ xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 21: DEMO RSSからタイトル一覧を取得する Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 22: 4行 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 23: ちなみにこうすると3行 <?php foreach (simplexml_load_file("rss2.xml")->channel- >item as $val) { echo $val->title . "¥n"; } Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 24: 属性へのアクセス $xml->attributes()->version <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0“ xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 25: (こんな風にもアクセスできます) (記号とかが入ってたら{“”}で囲む) $xml->{“@attributes”}->version Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 26: 名前空間付き要素へのアクセス xml namespace <?xml version="1.0" encoding="utf-8" ?> <rss version="2.0“ xmlns:dc="http://purl.org/dc/elements/1.1/“ xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> <description>GRANADA Hatena @ sotarok</description> <dc:creator>sotarok</dc:creator> Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 27: $xml->channel->{“dc:creator”} Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 28: 名前空間付き要素へのアクセス $xml->channel ->children(“http://purl.org/dc/elements/1.1/”) ->creator Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 29: xpath xpathしってますかー? Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 30: xpath XPath は、XML ドキュメントの一部をアド および XPointer で使用するように設計 レッシングするための言語であり、XSLT されている。 http://www.infoteria.com/jp/contents/xml-data/REC-xpath- 19991116-jpn.htm Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 31: 代表的なxpath式 id(‘ID’) idがIDである要素 //hoge hogeノード //hoge/@fuga hogeノードのfuga属性 //hoge[@fuga] hogeノードで属性fuga有 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 32: DEMO xpathを使って RSSからタイトル一覧を取得 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 33: ここまでがSimpleXMLの基本的な機能 (だいたい) 書き込む方の紹介してないけど Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 34: もっとSimpleXMLを使う Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 35: DOMDocumentと連携して 簡単にスクレイピング Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 36: DOMDocument ⇔ SimpleXML 自在に変換可能 simplexml_import_dom dom_import_simplexml Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 37: DEMO DOMDocumentとxpathを使って Twitterから発言一覧を取り出す Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 38: ちょっとしたチューニング Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 39: インスタンス生成時のオプション $xml = simplexml_load_string( $some_string, ‘SimpleXMLElement’, LIBXML_COMPACT ); Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 40: DEMO LIBXML_COMPACT 使った場合と使っていない場合の比較 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 41: ただまぁ スペックの高いマシンでは ほとんど差がでませんでした Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 42: SimpleXMLIterator Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 43: インスタンス生成時のオプション $xml = simplexml_load_string( $some_string, ‘SimpleXMLIterator’ ); Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 44: なにが違うか ちょっとサンプル Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 45: つーかこういう使い方しちゃだめ $xml->hogehoge[$i]->fugafuga Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 46: とかちゃんと調べずに言ってますが, 今度余裕があれば中身まで だれか...(ぉ Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 47: XMLReader Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 48: 結論から言えば Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 49: 存在価値のわからないモジュール Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 50: というのはちょっと言いすぎで Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 51: そのまえに DOMの復習 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 52: カーソル ノードタイプ <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 53: カーソル 開始ノード 開始ノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 54: カーソル Significant Whitespaceノード ノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 55: カーソル 開始ノード 開始ノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 56: カーソル Significant Whitespaceノード ノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 57: カーソル 開始ノード 開始ノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 58: カーソル テキストノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 59: カーソル 終了ノード 終了ノード <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content /" xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 60: という風に進みます・・・ Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 61: とりあえず使ってみる $xml = new XMLReader(); $xml->open(“rss2.xml”); Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 62: 要素はプロパティに入っている echo $xml->name; echo $xml->value; Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 63: DEMO カーソルの動き方 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 64: たぶん まじめに仕様にしたがってやったら XMLReaderなんだろうなー Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 65: でもそこはPHP PHP = ラッパー・テンプレート言語 Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 66: SimpleXMLだと $xml->channel->title <?xml version=“1.0” encoding=“utf-8” ?> <rss version="2.0“ xml:lang="ja"> <channel> <title>GRANADA Hatena @ sotarok</title> <link>http://d.hatena.ne.jp/sotarok/</link> ... Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 67: 楽チン Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 68: そういうわけで 存在価(r Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 69: メリット(たぶん) メモリ使用量 (実行速度は若干遅) Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 70: XMLReaderについては サンプルはネット上に あまりころがっていない (IBMのサイトに良い記事あった!) Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 71: まぁマニュアル見ればOK (結構充実している) Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 72: まとめ Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 73: PHP5でのXMLの機能はかなり強い SimpleXML -> 早い・簡単 XMLReader -> がんばる Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons
Slide 74: おわり Copyright (c) sotarok 2008, Attribution-NonCommercial Creative Commons




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)