Extract multiple attributes values in XML tags
There are many issues with your posted example that prevent it from being sanely parsed by XML, including lack of closing tags and lack of a starting xml tag. You say that the content is generated: if you generated it, you should try to fix this. Anyway.

import re

pat = re.compile('name="(.*?)".*'
                 'line-rate="([0-9.]*)"')

with open('test.xml') as f:
    for line in f:
        match = pat.search(line)
        if match:
            print(match.expand(r'\1 \2'))


This makes many assumptions:


The attributes actually are in the same order every time (in your example, they aren't, despite you saying that they should be)
The file is guaranteed to have at most one line-rate/name pair per line
Those two attributes are always on the same line as each other


If all of those conditions are satisfied, the above works.

Actual XML

If (as it seems you suggested in a now-rolled-back edit) your input can actually be valid XML, then a method that will perform more validation is

from xml.sax import parse, ContentHandler

class Handler(ContentHandler):
    def startElement(self, name, attrs):
        name, rate = attrs.get('name'), attrs.get('line-rate')
        if name and rate:
            print(f'{name} {rate}')

parse('test.xml', Handler())


I do not know if it is faster, but it's probably a better idea to do this and halt-and-catch-fire if the XML is malformed, which SAX will do for you.