title: Missing child nodes when deserializing XML to object
body: <p>I have requirement to process certain xml, having trouble deserializing a list of objects from it. Following is the xml:</p>
  
  <pre><code>&lt;catalog&gt;
  &lt;item&gt;
      &lt;id&gt;18338517&lt;/id&gt;
      &lt;note label="Name "&gt;Gear xyz&lt;/note&gt;
      &lt;note label="Size "&gt;10&lt;/note&gt;       
      &lt;note label="Source"&gt;Store xyz&lt;/note&gt;
      &lt;relation weight="100"&gt;
          &lt;type&gt;External&lt;/type&gt;
          &lt;id&gt;123&lt;/id&gt;
          &lt;name&gt;Mcday&lt;/name&gt;          
      &lt;/relation&gt;
      &lt;relation weight="99"&gt;
          &lt;type&gt;Internal&lt;/type&gt;
          &lt;id&gt;234&lt;/id&gt;
          &lt;name&gt;Mcnight&lt;/name&gt;
      &lt;/relation&gt;
  &lt;/item&gt;
      &lt;item&gt; ..... &lt;/item&gt;&lt;/catalog&gt;
  </code></pre>
  
  <p>Following is my class </p>
  
  <pre><code>[XmlRoot("catalog")]
  public class Catalog
  {
      [XmlArray("item")]
      [XmlArrayItem("item", typeof(Item))]
      public Item[] item{ get; set; }
  }
  
  [XmlRoot("item")]
  public class Item
  {
      [XmlElement("id")]
      public string id { get; set; }
  
      [XmlArrayItem("note", typeof(Note))]
      public Note[] note { get; set; }
  
      [XmlArrayItem("relation", typeof(Relation))]
      public Relation[] relation { get; set; }
  }
  
  [Serializable]
  public class Note
  {
      [XmlAttribute("label")]
      public string label { get; set; }
  
      [XmlText]
      public string Value { get; set; }
  }
  
  [Serializable]
  public class Relation
  {
      [XmlAttribute("weight")]
      public string weight { get; set; }
  
      [XmlText]
      public string Value { get; set; }
  
      [XmlElement("id")]
      public string id { get; set; }
  
      [XmlElement("type")]
      public string type { get; set; }
  
      [XmlElement("name")]
      public string name { get; set; }
  }
  </code></pre>
  
  <p>And finally, calling to deserialize</p>
  
  <pre><code>Catalog catalog = null;
  XmlSerializer mySerializer = new XmlSerializer(typeof(Catalog));
  using (TextReader reader = new StreamReader(@"D:\TEMP\deserialize xml\catalog.xml"))
  {
      catalog = (Catalog)mySerializer.Deserialize(reader);
  }
  </code></pre>
  
  <p>It doesn't return any errors, just empty item in the catalog object. </p>