So I decided to implement XmlSerializer “again”

Reinventing the wheel T_T

ref = CXuesong/XSerializer/

Pull is welcomed T_T if you’d like to

Recently I’ve been considering the following problems:

When serializing using `XmlSerializer` to get more control on what the XML should look like,

  1. How to serialize members with type `Nullable<T>`, persisting it as XML attribute (rather than element)?
  2. How to serialize references, avoiding it persisted as multiple identical copies of one object?
  3. How to achieve the these two things above, without introducting public auxiliary properties?
    (e.g. for case 1, an auxiliary property can be introduced to do the conversions between `Nullable<T>` and `string`, the latter of which can be persisted as XML attribute.)

It seems that case 2 can be solved using `DataContractSeriallizer`. However, `DataContractSeriallizer` generates Id by itself, and represent Id and its references with `z:Id` and`z:Ref`. As I’ve mentioned in previously (在 XmlSerializer 与 DataContractSerializer 之间抉择), `DataContractSeriallizer` is rather rigid when you want to control the appearance of XML tree it generates.

Then, how to solve these problems?

Maybe, I’ll reinvent the wheel.

See Also

c# – Is there any way for my class to support serialisation as an XML attribute? – Stack Overflow

Leave a Reply

Your email address will not be published. Required fields are marked *

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Content is available under CC BY-SA 3.0 unless otherwise noted.