docs: def parse(self, xml_file):
          "Get a list of parsed recipes from BeerXML input"
  
          recipes = []
  
          with open(xml_file, "rt") as f:
              tree = ElementTree.parse(f)
  
          for recipeNode in tree.iter():
              if self.to_lower(recipeNode.tag) != "recipe":
                  continue
  
              recipe = Recipe()
              recipes.append(recipe)
  
              for recipeProperty in list(recipeNode):
                  tag_name = self.to_lower(recipeProperty.tag)
  
                  if tag_name == "fermentables":
                      for fermentable_node in list(recipeProperty):
                          fermentable = Fermentable()
                          self.nodes_to_object(fermentable_node, fermentable)
                          recipe.fermentables.append(fermentable)
  
                  elif tag_name == "yeasts":
                      for yeast_node in list(recipeProperty):
                          yeast = Yeast()
                          self.nodes_to_object(yeast_node, yeast)
                          recipe.yeasts.append(yeast)
  
                  elif tag_name == "hops":
                      for hop_node in list(recipeProperty):
                          hop = Hop()
                          self.nodes_to_object(hop_node, hop)
                          recipe.hops.append(hop)
  
                  elif tag_name == "miscs":
                      for misc_node in list(recipeProperty):
                          misc = Misc()
                          self.nodes_to_object(misc_node, misc)
                          recipe.miscs.append(misc)
  
                  elif tag_name == "style":
                      style = Style()
                      recipe.style = style
                      self.nodes_to_object(recipeProperty, style)
  
                  elif tag_name == "mash":
  
                      for mash_node in list(recipeProperty):
                          mash = Mash()
                          recipe.mash = mash
  
                          if self.to_lower(mash_node.tag) == "mash_steps":
                              for mash_step_node in list(mash_node):
                                  mash_step = MashStep()
                                  self.nodes_to_object(mash_step_node, mash_step)
                                  mash.steps.append(mash_step)
                          else:
                              self.nodes_to_object(mash_node, mash)
  
                  else:
                      self.node_to_object(recipeProperty, recipe)
  
          return recipes