title: C# XML Serialization un-nested arrays/list
body: <p>I'm writing a C# <code>WinForm</code> application that should read a pre-existant <code>XML</code> file.
  I need to parse the <code>XML</code> file and build up a data structure to reflect the <code>XML</code> file content.
  I have some experience in <code>XML</code> serialization an thus I tought to use the <code>.NET</code> <code>XML.Serialization</code> features. 
  I got stuck in a strange <code>XML</code> structure that I'm unable to match within the class (trough attributes, elements and so on):</p>
  
  <pre><code>&lt;sheet number="1" name="/" tstamps="/"&gt;
    &lt;title_block&gt;
      &lt;title&gt;ECC Push-Pull&lt;/title&gt;
      &lt;company/&gt;
      &lt;rev&gt;0.1&lt;/rev&gt;
      &lt;date&gt;Sat 21 Mar 2015&lt;/date&gt;
      &lt;source&gt;ecc83-pp.sch&lt;/source&gt;
      &lt;comment number="1" value=""/&gt;
      &lt;comment number="2" value=""/&gt;
      &lt;comment number="3" value=""/&gt;
      &lt;comment number="4" value=""/&gt;
    &lt;/title_block&gt;
  &lt;/sheet&gt;
  </code></pre>
  
  <p>The 'weird' part of this is the list of comments. I'm used to find such 'repeating' items as a result of serialization of a list/array of elements with XmlArray directive. Using such approach anyway would introduce a surrouding tag to include the list of items. In this case how can I 'reflect' this structure?
  This's the code that I should use (without the 'missing' comments):</p>
  
  <pre><code>[XmlRoot("sheet")]
  public class Sheet
  {
      [XmlAttribute("number")]
      public int Number { get; }
  
      [XmlAttribute("name")]
      public string Name { get; set; }
  
      [XmlAttribute("tstamps")]
      public UInt32 TimeStamps { get; set; }
  
      [XmlElement]
      public SheetTitle Title { get; set; }
  
      public Sheet()
      {
          Title = new SheetTitle();
      }
  }
  
  
  [XmlRoot("title_block")]
  public class SheetTitle
  {
      [XmlElement("title")]
      public string Title { get; set; }
  
      [XmlElement("company")]
      public string Company { get; set; }
  
      [XmlElement("rev")]
      public string Revision { get; set; }
  
      [XmlElement("date")]
      public DateTime Date { get; set; }
  
      [XmlElement("source")]
      public string Source { get; set; }
  
      public SheetTitle()
      {
          Date = DateTime.Now;
      }
  }
  
  [XmlRoot("comment")]
  public class Comment
  {
      [XmlAttribute("number")]
      public int Number { get; set; }
  
      [XmlAttribute("value")]
      public string Value { get; set; }
  }
  </code></pre>
  
  <p>I have another side question. The best class hierarchy to reflect this structure is:
  a) nesting the classes in the same way of the xml elements
  b) keep all classes at the same level (without a hierarchy)?
  There are side effects to keep into account ?</p>