'Return the text contents of a sub element.
In case the element does not exist, or it has no textual content,
a default value can be returned instead. An empty string is returned
if no other default is supplied.
:param name: The name or XPath expression of the element.
:param default: Optional default to return if the element does
not exists. An empty string is returned otherwise.'

def _get_sub_text(self, name, default=u'', lang=None):

    name = self._fix_ns(name)
    if (lang == u'*'):
        return self._get_all_sub_text(name, default, None)
    default_lang = self.get_lang()
    if (not lang):
        lang = default_lang
    stanzas = self.xml.findall(name)
    if (not stanzas):
        return default
    for stanza in stanzas:
        if (stanza.attrib.get((u'{%s}lang' % XML_NS), default_lang) == lang):
            if (stanza.text is None):
                return default
            return stanza.text
    return default
