def get_inner_text(dom_node):
    """
    Returns a unicode string that is the amalgamation of all the text
    interior to node dom_node.  Recursively grabs the inner text from
    all descendent (child, grandchild, etc.) nodes.
    """

    text_strings = []
    for node in dom_node.childNodes:
        if node.nodeType == dom_node.TEXT_NODE \
                or node.nodeType == dom_node.CDATA_SECTION_NODE:
            text_strings.append(node.data)
        else:
            text_strings.append(get_inner_text(node))

    return "".join(text_strings).strip()