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
from lxml import objectify
from lxml import objectify, etree
from openlp.core.lib import Receiver, translate
from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB
@ -46,6 +46,17 @@ class OpenSongBible(BibleDB):
BibleDB.__init__(self, parent, **kwargs)
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):
"""
Loads a Bible from file.
@ -89,7 +100,7 @@ class OpenSongBible(BibleDB):
db_book.id,
int(chapter.attrib[u'n'].split()[-1]),
int(verse.attrib[u'n']),
unicode(verse.text))
unicode(self.get_text(verse)))
self.wizard.incrementProgressBar(unicode(translate(
'BiblesPlugin.Opensong', 'Importing %s %s...',
'Importing <book name> <chapter>...')) %