The opensong database file contained verses containing sub-elements such as <i> tags. lxml considders the text of an element up until the first sub element.
This commit is contained in:
Philip Ridout 2012-06-17 14:57:35 +01:00
parent f542ebf94d
commit 9bb4418487

View File

@ -26,7 +26,7 @@
############################################################################### ###############################################################################
import logging import logging
from lxml import objectify from lxml import objectify, etree
from openlp.core.lib import Receiver, translate from openlp.core.lib import Receiver, translate
from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB
@ -46,6 +46,17 @@ class OpenSongBible(BibleDB):
BibleDB.__init__(self, parent, **kwargs) BibleDB.__init__(self, parent, **kwargs)
self.filename = kwargs['filename'] self.filename = kwargs['filename']
def get_text(self, element):
verse_text = u''
if element.text:
verse_text = element.text
for sub_element in element.iterchildren():
verse_text += self.get_text(sub_element)
if element.tail:
verse_text += element.tail
return verse_text
def do_import(self, bible_name=None): def do_import(self, bible_name=None):
""" """
Loads a Bible from file. Loads a Bible from file.
@ -89,7 +100,7 @@ class OpenSongBible(BibleDB):
db_book.id, db_book.id,
int(chapter.attrib[u'n'].split()[-1]), int(chapter.attrib[u'n'].split()[-1]),
int(verse.attrib[u'n']), int(verse.attrib[u'n']),
unicode(verse.text)) unicode(self.get_text(verse)))
self.wizard.incrementProgressBar(unicode(translate( self.wizard.incrementProgressBar(unicode(translate(
'BiblesPlugin.Opensong', 'Importing %s %s...', 'BiblesPlugin.Opensong', 'Importing %s %s...',
'Importing <book name> <chapter>...')) % 'Importing <book name> <chapter>...')) %