title: XML deserialize: different xml schema maps to the same C# class
body: <p>One of the jobs of my program is to read customer list from a xml file and deserialize them into C# class like below:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;customers&gt;
      &lt;customer&gt;
          &lt;name&gt;john&lt;/name&gt;
          &lt;id&gt;1&lt;/id&gt;
      &lt;/customer&gt;
      &lt;customer&gt;
          &lt;name&gt;mike&lt;/name&gt;
          &lt;id&gt;2&lt;/id&gt;
      &lt;/customer&gt;
  &lt;/customers&gt;
  </code></pre>
  
  <p>C# class:</p>
  
  <pre><code>[XmlRoot("customers")]
  public class CustomerList {
          [XmlElement("customer")]
          public Customer[] Customers { get; set; }
  }
  
  public class Customer {
      [XmlElement("name")]
      public String Name {get; set;}
  
      [XmlElement("id")]
      public String Id {get; set;}
  }
  </code></pre>
  
  <p>but recently customer wants to change the tag name from <code>&lt;id&gt;</code> to <code>&lt;code&gt;</code> like the one below:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;customers&gt;
      &lt;customer&gt;
          &lt;name&gt;john&lt;/name&gt;
          &lt;code&gt;1&lt;/code&gt;
      &lt;/customer&gt;
      &lt;customer&gt;
          &lt;name&gt;mike&lt;/name&gt;
          &lt;code&gt;2&lt;/code&gt;
      &lt;/customer&gt;
  &lt;/customers&gt;
  </code></pre>
  
  <p>The value for 'code' will have the same meaning with previous tag 'id'. And they want that during transition the program should be amended so it recognizes both tags for a period of time.</p>
  
  <p>Is there any easy method to achieve that? Thanks.</p>