Extrair dados entre duas tags no arquivo HTML

Eu tenho um arquivo HTML ENORME salvo aqui no meu sistema, que contém dados de um catálogo de produtos. Os dados são estruturados de modo que, para cada registro do produto, o nome esteja entre duas tags (nome) e (/ name).

Cada produto possui até três atributos: nome, ID do produto e cor, mas nem todos os produtos terão todos esses atributo

Como eu extrair esses dados para cada produto sem misturar os atributos do produto? O arquivo também tem 50 megabytes!

Code example ....

<name>'hat'</name>
blah blah blah
<prodId>'1829493'</prodId>
blah blah blah
<color>'cyan'</color>

blah blah 
blah blah blah
blah blah blah

<name>'shirt'</name>
blah blah blahblah blah blah
<prodId>'193'</prodId>

<name>'dress'</name>
blah blah blah
blah blah blah
<prodId>'18'</prodId>
<color>'dark purple'</color>

questionAnswers(2)

yourAnswerToTheQuestion