code: def parse_fast(xmlfile, element_name, attrnames, warn=False, optional=False):
      
      prefixedAttrnames = [_prefix_keyword(a, warn) for a in attrnames]
      if optional:
          pattern = ''.join(['<%s' % element_name] +
                            ['(\\s+%s="(?P<%s>[^"]*?)")?' % a for a in zip(attrnames, prefixedAttrnames)])
      else:
          pattern = '.*'.join(['<%s' % element_name] +
                              ['%s="([^"]*)"' % attr for attr in attrnames])
      Record = namedtuple(element_name, prefixedAttrnames)
      reprog = re.compile(pattern)
      for line in open(xmlfile):
          m = reprog.search(line)
          if m:
              if optional:
                  yield Record(**m.groupdict())
              else:
                  yield Record(*m.groups())
docs: Parses the given attrnames from all elements with element_name
      @Note: The element must be on its own line and the attributes must appear in
      the given order.
      @Example: parse_fast('plain.edg.xml', 'edge', ['id', 'speed'])