This is interesting, and I did play around with it. However, it does not appear to be straightforward.

I don't think self.question is necessarily parsable XML (and using the first suggested option leads to a unit test error related to unexpected end of document).

Using text=self.question stores the question as a text attribute, which is different from how it is currently stored. This leads to roundtrip export unit test failures (different failures from the first suggested option).

It does appear that using etree properly handles unicode. Nonetheless, with my very limited understanding of this code, I think that changing how the XML is generated is beyond the scope of this bug fix.