XML解析 (パーサ) | Python-izm

XML解析

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