From 6c0f71f581d5b8d9a519a6645f571f54b38afca8 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Tue, 25 Jan 2011 16:27:59 +0100 Subject: [PATCH 1/1] fix for fragments extraction --- librarian/html.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 -- 2.20.1