input: 
  def parse_xml(text) -> List[Tag]:
      """ Parse an XML document and return a list of tag objects.
      Each tag object should contain the id of the tag and a list of values from its subchildren.
  
      >>> example_text = '''<xml>
      ...   <root>
      ...     <child1 id="1">
      ...       <subchild1 value="a"></subchild1>
      ...       <subchild2 value="b"></subchild2>
      ...     </child1>
      ...     <child2 id="2">
      ...       <subchild3 value="c"></subchild3>
      ...       <subchild4 value="d"></subchild4>
      ...     </child2>
      ...   </root>
      ... </xml>'''
      >>> tags = parse_xml(example_text)
      >>> len(tags) == 2
      True
      >>> tags[0].tag_id == '1'
      True
      >>> tags[0].values == ['a', 'b']
      True
      >>> tags[1].tag_id == '2'
      True
      >>> tags[1].values == ['c', 'd']
      True
      """
      tag_objects = []
  
      root = ET.fromstring(text)
      for child in root:
          tag = Tag(child.attrib["id"])
          for subchild in child:
              tag.add_value(subchild.attrib["value"])
          tag_objects.append(tag)
  
      return tag_objects
  
  class Tag:
      def __init__(self, tag_id):
          self.tag_id = tag_id
          self.values = []
      
      def add_value(self, value):
          self.values.append(value)
  
output:     
  import xml.etree.ElementTree as ET
  
  def parse_xml(text) -> List[Tag]:
      """ Parse an XML document and return a list of tag objects.
      Each tag object should contain the id of the tag and a list of values from its subchildren.
  
      >>> example_text = '''<xml>
      ...   <root>
      ...     <child1 id="1">
      ...       <subchild1 value="a"></subchild1>
      ...       <subchild2 value="b"></subchild2>
      ...     </child1>
      ...     <child2 id="2">
      ...       <subchild3 value="c"></subchild3>
      ...       <subchild4 value="d"></subchild4>
      ...     </child2>
      ...   </root>
      ... </xml>'''
      >>> tags = parse_xml(example_text)
      >>> len(tags) == 2
      True
      >>> tags[0].tag_id == '1'
      True
      >>> tags[0].values == ['a', 'b']
      True
      >>> tags[1].tag_id == '2'
      True
      >>> tags[1].values == ['c', 'd']
      True
      """
      tag_objects = []
  
      root = ET.fromstring(text)
      for child in root:
          tag = Tag(child.attrib["id"])
          for subchild in child:
              tag.add_value(subchild.attrib["value"])
          tag_objects.append(tag)
  
      return tag_objects
  
  class Tag:
      def __init__(self, tag_id):
          self.tag_id = tag_id
          self.values = []
      
      def add_value(self, value):
          self.values.append(value)
  