ここでは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/