The xmlSerialize method is called during xml writing.
Use the $writer argument to write its own xml serialization.
An important note: do not create a parent element. Any element
implementing XmlSerializable should only ever write what's considered
its 'inner xml'.
The parent of the current element is responsible for writing a
containing element.
This allows serializers to be re-used for different element names.
If you are opening new elements, you must also close them again.