* This wrapper controls the lifetime of the parser object.
*
* Initializing the parser is much more expensive than parsing a single XML document, therefore the parser should be reused if possible.
*
* It might make sense to use a singleton internally to keep the parser alive between usages. Alternatively this object can be kept alive for as long as it makes sense.
*
* This class also encapsulates the initialization of the whole parser, which must be done manually because precomiled schemas are used (which greatly improves the initialization performance).
*
* Writing the document is static and doesn't need any initialization and is therefore not wrapped by this object.