XML解析 (パーサ)
前項ではHTMLを解析しました。本項ではPythonでXML解析 (パース)を行います。
DOMを用いて指定のXMLファイルを解析します。まずは下記のようなサンプルファイルを用意しましょう。
-- ファイル名:sample.xml --
<?xml version="1.0" encoding="UTF-8"?>
<bookmark>
<site>
<name>google</name>
<url>http://www.google.co.jp/</url>
</site>
<site>
<name>yahoo</name>
<url>http://www.yahoo.co.jp/</url>
</site>
<site>
<name>python</name>
<url>http://www.python-izm.com/</url>
</site>
</bookmark>
次は解析プログラム本体です。 7行目から18行目でファイル内の全ての要素を出力し、22行目、23行目で指定の要素を取得しています。
# -*- coding: utf-8 -*-
import xml.dom.minidom
dom = xml.dom.minidom.parse('sample.xml')
print dom.documentElement.tagName
for node in dom.documentElement.childNodes:
if node.nodeType == node.ELEMENT_NODE:
print ' ' + node.tagName
for node2 in node.childNodes:
if node2.nodeType == node2.ELEMENT_NODE:
print ' ' + node2.tagName
for node3 in node2.childNodes:
if node3.nodeType == node3.TEXT_NODE:
print ' ' + node3.data
print '-------------------------------------'
for url in dom.getElementsByTagName('url'):
print url.firstChild.data
--実行結果--
bookmark
site
name
google
url
http://www.google.co.jp/
site
name
yahoo
url
http://www.yahoo.co.jp/
site
name
python
url
http://www.python-izm.com/
-------------------------------------
http://www.google.co.jp/
http://www.yahoo.co.jp/
http://www.python-izm.com/
スレッドプログラミングも可能です!
▶応用編:スレッド
