title: Use XmlReader and Ignore Order of Nodes
body: <p>I'm trying to implement the 'IXmlSerializable' interface and struggle with the 'ReadXml' implementation. Here is my serialized xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-16"?&gt;
  &lt;MyClass&gt;
    &lt;IntProperty&gt;100&lt;/IntProperty&gt;
    &lt;BoolProperty&gt;True&lt;/BoolProperty&gt;
    &lt;ArrayProperty&gt;
      &lt;ArrayEntry MyAttr="Bob" /&gt;
      &lt;ArrayEntry MyAttr="Alice" /&gt;
    &lt;/ArrayProperty&gt;
    &lt;StringProperty&gt;Hello World!&lt;/StringProperty&gt;
  &lt;/MyClass&gt;
  </code></pre>
  
  <p>There is this "little" <strong>special requirement</strong> that the deserialization must be <em>backwards-compatible</em> to older serialized versions which have might have a different order of elements, are missing elements or have additional (now unused) elements. How can I do this?</p>
  
  <pre><code>Public Class MyClass
    Implements IXmlSerializable
  
      Public Property IntProperty As Integer
      Public Property BoolProperty As Boolean
      Public Property ArrayProperty As ArrayEntry()
      Public Property StringProperty As String
  
      Public Sub ReadXml(reader As System.Xml.XmlReader) Implements IXmlSerializable.ReadXml
          ' to be done ...
      End Sub
  
      ' ...
  
  End Class
  
  Public Class ArrayEntry
      Public Property MyAttr As String
  End Class
  </code></pre>