Pero por supuesto que no va a funcionar de esa manera, pues entre <error> y <message> hay un salto de linea y en tu expresión no informas de ello.
Las expresiones regulares son fáciles de escribir si tomamos en cuenta todos los espacios en blanco, incluyendo los saltos de linea. Para volverlos opcionales, o en caso de que sean bastantes debes usar
\s* en tu expresión.
Cita: <error>\s*<message>(.*)</message>\s*<code>(.*)</code>\s*</error>