ここではPythonにおけるXML解析 (パース)を解説します。
DOM
DOMを用いて指定のXMLファイルを解析します。まずは下記のようなファイルを用意しましょう。
<?xml version="1.0" encoding="UTF-8"?>
<python-izm>
<category>
<name>introduction</name>
<url>https://www.python-izm.com/introduction/</url>
</category>
<category>
<name>basic</name>
<url>https://www.python-izm.com/basic/</url>
</category>
<category>
<name>advanced</name>
<url>https://www.python-izm.com/advanced/</url>
</category>
</python-izm>
次のような形で解析を行います。5行目から16行目でファイル内の全ての要素を出力し、20行目、21行目で指定の要素を取得しています。
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)
python-izm
category
name
introduction
url
https://www.python-izm.com/introduction/
category
name
basic
url
https://www.python-izm.com/basic/
category
name
advanced
url
https://www.python-izm.com/advanced/
-------------------------------------
https://www.python-izm.com/introduction/
https://www.python-izm.com/basic/
https://www.python-izm.com/advanced/
