Extrayendo datos entre dos etiquetas en el archivo HTML

Tengo aquí un archivo HTML INDIVIDUAL guardado en mi sistema, que contiene datos de un catálogo de productos. Los datos están estructurados de tal manera que para cada registro de producto, el nombre se encuentra entre dos etiquetas (nombre) y (/ nombre).

Cada producto tiene hasta 3 atributos: nombre, ID de producto y color, pero no todos los productos tendrán todos estos atributos.

¿Cómo haría para extraer estos datos para cada producto sin mezclar los atributos del producto? ¡El archivo también tiene 50 megabytes!

Code ejemplo ....

<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>

Respuestas a la pregunta(2)

Su respuesta a la pregunta