PHPマニュアル XCVIII. SimpleXML関数より。。。このモジュールは、 実験的なものです。これは、これらの関数の動作、関数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリリースで変更される可能性があります。注意を喚起するとともに、このモジュールは使用者のリスクで使用して下さい。 サンプルは、EXPERIENCEで実際に確認できるようにしてますので、気になる方は見てみてください。 XML操作を考えた場合、PHP4まではDOMあるいはSAXということになりますが、 DOMは面倒 SAXは複雑なXMLを扱いにくい といった問題があります。ここでは、PHP5から追加された簡単にXMLファイルを扱うための「SimpleXML関数」について試してみました。 以前に、Relaxerを参考にXMLアクセスクラスを自動生成してみましたが、SimpleXML関数も基本的に
飽きる前にそれなりに形になったのでリリースしておきます Python 2.5*とBeautifulSoup 3.0.7* or 3.1.0*の環境でとりあえず動くXPathEvaluatorです。 アーカイブファイル(ZIP):BSXPath.py: XPathEvaluator Extension for BeautifulSoup 上記ファイル(BSXPath.py)を使ったサンプルはこちら 【2009/04/05追記】 BSXPath.pyを使ったサービスを公開しました。 任意のサイトのフィードパターンを作成・共用できるサービス 使い方 from BSXPath import BSXPathEvaluator,XPathResult #*** 準備 document = BSXPathEvaluator(<html>) # html: HTMLテキスト # ※BSXPathEvalu
Parsers Parsers are represented by parser objects. There is support for parsing both XML and (broken) HTML. Note that XHTML is best parsed as XML, parsing it with the HTML parser can lead to unexpected results. Here is a simple example for parsing XML from an in-memory string: >>> xml = '<a xmlns="test"><b xmlns="test"/></a>' >>> root = etree.fromstring(xml) >>> etree.tostring(root) b'<a xmlns="te
以前、lingrでlxmlをdisっている人を見たとき、その人のペースに巻き込まれて、lxmlってそういうもんだと思い込んでしまいました。ただ、最近lxmlを使い始めて、なかなかちゃんとしていることが分かってきたので、メモを書き溜めて行こうと思います。というか、オフィシャルなドキュメントの写経に近いのですが。 文字列からElementオブジェクトを生成するetree.fromstringを使う。 from lxml import etree el = etree.fromstring("spam") 整形式XMLでない場合etree.parseの第二引数にetree.HTMLParser()を指定。 from lxml import etree el = etree.fromstring("spam", etree.HTMParser()) 非UTF-8でエンコードされたXML(風の文字列
ここ数日でHTMLからTagを除去する方法を、色々知った。とても勉強になりました。教えてくれた人ありがとうです。 具体的には、BeautifulSoupとHTMLParserとlxmlという3つのライブラリでそれぞれTag除去が可能な事が分かった。実際どれも満足な挙動で、じゃあどれを使えばいいのさ!と、迷ったので実行速度を適当に測ってみた。 時間を計るところのコードが激しく恥ずかしい。ホントは、3つのファンクションを配列に入れて、forで回したかったけど、配列に入れる時に評価されてしまってNG、map関数で、関数と関数(計測したい関数と、計測する関数)を2つ渡すやり方がわかんなかったので、同じ事を3回書く事にした。マジ恥ずかしいがこれしか思いつかなかった。 計測用のHTMLには、はてダのトップページとした、コメント、Style、Script、htmlがそこそこのボリュームで入っていた為 計
lxml とはXMLやHTMLを扱うPythonのライブラリの一つです。 lxml is the most feature-rich and easy-to-use library for working with XML and HTML in the Python language. – lxmlの冒頭の文より linux系OS(Fedoraなど)の場合 # yum python-lxml も一つの手ですがバージョンが古いので、通常はeasy_install経由でlxmlをインストールします。 前段階として、easy_installをインストールするためにhttp://peak.telecommunity.com/dist/ez_setup.pyをダウンロードしてスーパーユーザで実行します。 # python ez_setup.py error: invalid Python inst
<?xml version="1.0" encoding="UTF-8"?> <items> <item> <id>1</id> <name>hoge</name> <type>word</type> </item> <item> <id>2</id> <name>hige</name> <type>word</type> </item> <item> <id>3</id> <name>hage</name> <type>image</type> </item> </items> >>> from lxml import etree >>> xml = etree.parse(open('test.xml', 'r'), parser=etree.XMLParser()) >>> xml <etree._ElementTree object at 0x7406c0> >>> # ルートノー
bonlifeです。誰かに教えられるほどPython詳しいわけじゃないですが、lxmlのobjectifyはやっぱり便利だよ、ということを伝えたい! だけどもっとレスポンスが速い方法があるはず。 誰か教えてw まとめ記事はこちら。(記事中のquoteはurllib2.quoteっぽい。) lxmlのobjectifyを使うとかなり使いやすいオブジェクトが生成されます。最初(objectify.parse)のレスポンスは結構遅そうですが…。 import urllib2 from lxml import objectify host = u'http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService' id = u'&SubscriptionId=AWSのアクセスキー' ope = u'&Operation=Ite
Introduction lxml is a Pythonic binding for the libxml2 and libxslt libraries. It is unique in that it combines the speed and feature completeness of these libraries with the simplicity of a native Python API, mostly compatible but superior to the well-known ElementTree API. See the introduction for more information about background and goals. Some common questions are answered in the FAQ. This pa
http://bakery.cakephp.org/をうろうろしてたらこんな記事を発見。 Parsing XML files with CakePHP (Articles) | The Bakery, Everything CakePHP そういえばXMLクラスなんてあったっけなどと思いつつサンプルコードを作ってみました。 <?php class ParseController extends AppController { var $name = "Parse"; var $uses = array(); function xml() { // import XML class App::import('Xml'); // your XML file's location $file = "http://feeds.feedburner.com/Cakebaker"; // now pa
XML を解析するには SimpleXML とかありますが、CakePHP の XML クラスを使えば簡単に配列に変換できるのでメモ。 uses('Xml'); $xml = new Xml("/path/to/xml"); $xml_array = Set::reverse($xml); /path/to/xml の部分はサーバ内のファイルへのパスでも、URL でも大丈夫です。URL を指定すると XML クラスの内部で先日書いた HttpSocket クラスを使用して取得してくれます。 XML のソース cake/libs/xml.php 関連する投稿 Time Capsule を接続した WordCamp Tokyo 2008 アンケート結果 CakePHP html ヘルパーでラジオボタンの選択状態 (checked) を指定する方法 11月に読んだ本 2038年問題でクッキーの有
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く