PythonでXMLを触ってみる11 saxね
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>
sax4.py
#!/usr/bin/python # -*- coding: utf-8 -*- import xml.sax, xml.sax.saxutils base = xml.sax.saxutils.XMLGenerator class SampleHandler4J(base): def startElement(self, tag, attrs): if tag != u'cars': base.startElement(self, tag, attrs) def endElement(self, tag): if tag != u'cars': base.endElement(self, tag) file = open('resultS.xml', 'w') xml.sax.parse('SampleS.xml', SampleHandler4J(file, 'utf-8'))
実行結果
$ cat resultS.xml <?xml version="1.0" encoding="utf-8"?> <car country="日本"> <name>乗用車</name> <price>150</price> <img file="car1.jpg"></img> </car> <car country="日本"> <name>トラック</name> <price>500</price> <img file="car2.jpg"></img> </car> <car country="アメリカ"> <name>オープンカー</name> <price>200</price> <img file="car3.jpg"></img> </car>
car要素以下のみ抽出しました。
今回はXMLGeneratorというクラスを使用しています。