その時々

その時々で違うんです。特に決まっていないんです。

PythonでXMLを触ってみる8 saxね

続いてSAXに入ります。
SAXはイベントドリブン方式なのでDOMのように一度メモリにドキュメントツリーを
読み込んでから処理をしないので大きなデータ処理に向きます。

まずは一番簡単なところです。

SampleS.xml

<?xml version="1.0" encoding="UTF-8"?>
<cars>
  <car country="日本">
    <name>乗用車</name>
    <price>150</price>
    <img file="car1.jpg" />
  </car>
  <car country="日本">
    <name>トラック</name>
    <price>500</price>
    <img file="car2.jpg" />
  </car>
  <car country="アメリカ">
    <name>オープンカー</name>
    <price>200</price>
    <img file="car3.jpg" />
  </car>
</cars>

sax1.py

#!/usr/bin/python
# -*- coding: utf-8 -*-

import xml.sax

class SampleHandler1J(xml.sax.ContentHandler):
    def startDocument(self):
        print 'XML文書が開始しました。'
    def endDocument(self):
        print 'XML文書が終了しました。'

p = xml.sax.make_parser()
p.setContentHandler(SampleHandler1J())
p.parse('SampleS.xml')

実行結果

$ python sax1.py
XML文書が開始しました。
XML文書が終了しました。