From: Radek Czajka Date: Tue, 25 Jan 2011 15:27:59 +0000 (+0100) Subject: fix for fragments extraction X-Git-Tag: 1.7~213 X-Git-Url: https://git.mdrn.pl/librarian.git/commitdiff_plain/6c0f71f581d5b8d9a519a6645f571f54b38afca8?hp=53acb1f3e125b31e3c0837a67bf0a4a9a29e4548 fix for fragments extraction --- diff --git a/librarian/html.py b/librarian/html.py index 1f0615f..5f832e3 100644 --- a/librarian/html.py +++ b/librarian/html.py @@ -127,7 +127,13 @@ def extract_fragments(input_filename): open_fragments = {} closed_fragments = {} - for event, element in etree.iterparse(input_filename, events=('start', 'end')): + # iterparse would die on a HTML document + parser = etree.HTMLParser(encoding='utf-8') + buf = cStringIO.StringIO() + buf.write(etree.tostring(etree.parse(input_filename, parser).getroot()[0][0], encoding='utf-8')) + buf.seek(0) + + for event, element in etree.iterparse(buf, events=('start', 'end')): # Process begin and end elements if element.get('class', '') in ('theme-begin', 'theme-end'): if not event == 'end': continue # Process elements only once, on end event