def get_sub_text_from_xml_node( xmlnode, _text=None ):
    """
    Concatenates the content at and under the given ElementTree node, such as

        text = get_sub_text_from_xml_node( xmlnode )
    """
    if _text == None:
        _text = []

    if xmlnode.text:
        _text.append( xmlnode.text )

    for nd in xmlnode:

        get_sub_text_from_xml_node( nd, _text )

        if nd.tail:
            _text.append( nd.tail )

    return ''.join( _text )