2009年10月16日金曜日

ExpatでXMLを解析する

# -*- coding: utf-8 -*-

import xml.parsers.expat

def start_element(name, attrs):
    print 'Start element:', name, attrs
def end_element(name):
    print 'End element:', name
def char_data(data):
    print 'Character data:', repr(data)

p = xml.parsers.expat.ParserCreate()

p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data

p.Parse('<?xml version="1.0"?>\
<parent id="top">\
<child1 name="paul">Text goes here</child1>\
<child2 name="fred">More text</child2>\
</parent>')

# ファイルを解析する場合
# with open("file.xml") as f:
#     p.ParseFile(f)

実行すると
Start element: parent {u'id': u'top'}
Start element: child1 {u'name': u'paul'}
Character data: u'Text goes here'
End element: child1
Start element: child2 {u'name': u'fred'}
Character data: u'More text'
End element: child2
End element: parent

詳細はドキュメントで

1 件のコメント:

  1. XMLに日本語が含まれている場合、p.Parseするとバケてしまいます。
    どうすればよいのでしょうか?

    返信削除