PythonでXMLを触ってみる10 saxね
今回はテキストデータを拾ってみます。
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>
sax3.py
#!/usr/bin/python # -*- coding: utf-8 -*- import xml.sax class SampleHandler3J(xml.sax.ContentHandler): def startDocument(self): print 'XML文書が開始しました。' def endDocument(self): print 'XML文書が終了しました。' def startElement(self, tag, attrs): print '%rが開始しました。' % tag def endElement(self, tag): print '%rが終了しました。' % tag def characters(self, data): if len(data.strip()) != 0: print data p = xml.sax.make_parser() p.setContentHandler(SampleHandler3J()) p.parse('SampleS.xml')
実行結果
$ python sax3.py XML文書が開始しました。 u'cars'が開始しました。 u'car'が開始しました。 u'name'が開始しました。 乗用車 u'name'が終了しました。 u'price'が開始しました。 150 u'price'が終了しました。 u'img'が開始しました。 u'img'が終了しました。 u'car'が終了しました。 u'car'が開始しました。 u'name'が開始しました。 トラック u'name'が終了しました。 u'price'が開始しました。 500 u'price'が終了しました。 u'img'が開始しました。 u'img'が終了しました。 u'car'が終了しました。 u'car'が開始しました。 u'name'が開始しました。 オープンカー u'name'が終了しました。 u'price'が開始しました。 200 u'price'が終了しました。 u'img'が開始しました。 u'img'が終了しました。 u'car'が終了しました。 u'cars'が終了しました。 XML文書が終了しました。
SAXでも空文字を考慮する必要があるみたいです。