def parse_xml_body(data, basekey=None):
    """
    Takes nested BeautifulSoup object and returns all key value pairs.
    
    Parameters:
        data (BeautifulSoup): XML BeautifulSoup object

    Returns:
        list: List of dictionaries of key:val pairs
    """
    results = []
    if data.findChildren():
        # It's a parent node, recurse!
        for child in data.findChildren():
            results += parse_xml_body(child)
    else:
        # No children, easy enough.
        results.append({data.name: data.text})
    return results