views:

204

answers:

1
import xml.parsers.expat

def start_element(name, attrs):
    print('Start element:', name, attrs)

def end_element(name):
    print('End element:', name)

def character_data(data):
    print('Character data: %s' % data)

parser = xml.parsers.expat.ParserCreate()
parser.StartElementHandler = start_element
parser.EndElementHandler = end_element
parser.CharacterDataHandler = character_data
parser.ParseFile(open('sample.xml'))

The above works in python 2.6 but not in python 3.0 - any ideas to make it work in python 3 much appreciated. The error I get on the ParseFile line is TypeError: read() did not return a bytes object (type=str)

+1  A: 

you need to open that file as binary:

parser.ParseFile(open('sample.xml', 'rb'))
SilentGhost
Thank you! - that fixed it.
OpenSource