2009-02-11

lxmlでのxmlnsが指定されているタグをxpathで検索する方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
pythonでxmlをいじるのにlxmlを使ってみているのですが、普通に使う分には
xmlを解析した後のオブジェクトで普通にxpathに渡してやればよいわけです。
xml.xpath('//rss/channel/title')
みたいな感じです。
しかし、xmlnsが指定されているタグの場合はただ指定しても取れないのです。ちゃんとネームスペースを指定する指定があるようでした。
xml.xpath('//t:feed/t:title',namespaces={'t':'http://www.w3.org/2005/Atom'})
みたいな感じです。

あと、ちなみにxpathであるタグの属性を取りたいときは、
xml.xpath('//t:feed/t:entry/t:category/@term',namespaces={'t':'http://www.w3.org/2005/Atom'})
な感じでまずはタグを指定して、その後に@で属性名をつけるととれるようです。

参考になるサイトは、本家ですが
http://codespeak.net/lxml/xpathxslt.html
です。
コメントを投稿