def parse_rrset(e_rrset, connection, zone_id):
<EOL>kwargs = {<EOL>'<STR_LIT>': connection,<EOL>'<STR_LIT>': zone_id,<EOL>}<EOL>rrset_type = None<EOL>for e_field in e_rrset:<EOL><INDENT>tag_name = e_field.tag.split('<STR_LIT:}>')[<NUM_LIT:1>]<EOL>field_text = e_field.text<EOL>if tag_name == '<STR_LIT>':<EOL><INDENT>rrset_type = field_text<EOL>continue<EOL><DEDENT>elif tag_name == '<STR_LIT>':<EOL><INDENT>alias_hosted_zone_id, alias_dns_name = parse_rrset_alias(e_field)<EOL>kwargs['<STR_LIT>'] = alias_hosted_zone_id<EOL>kwargs['<STR_LIT>'] = alias_dns_name<EOL>kwargs['<STR_LIT>'] = None<EOL>continue<EOL><DEDENT>elif tag_name == '<STR_LIT>':<EOL><INDENT>kwargs['<STR_LIT>'] = parse_rrset_record_values(e_field)<EOL>continue<EOL><DEDENT>kw_name = RRSET_TAG_TO_KWARG_MAP[tag_name]<EOL>kwargs[kw_name] = field_text<EOL><DEDENT>if not rrset_type:<EOL><INDENT>raise Route53Error("<STR_LIT>")<EOL><DEDENT>if '<STR_LIT>' not in kwargs:<EOL><INDENT>kwargs['<STR_LIT>'] = []<EOL><DEDENT>RRSetSubclass = RRSET_TYPE_TO_RSET_SUBCLASS_MAP[rrset_type]<EOL>return RRSetSubclass(**kwargs)<EOL>
This a parser that allows the passing of any valid ResourceRecordSet
tag. It will spit out the appropriate ResourceRecordSet object for the tag.

:param lxml.etree._Element e_rrset: The root node of the etree parsed
    response from the API.
:param Route53Connection connection: The connection instance used to
    query the API.
:param str zone_id: The zone ID of the HostedZone these rrsets belong to.
:rtype: ResourceRecordSet
:returns: An instantiated ResourceRecordSet object.