Apply incremental counter when deserializing nested XML

I have XML with a nested structure, for example:

<Section id='1'>
  <Item name='Alpha' />
  <Item name='Beta' />
  <Section id='2'>
    <Item name='Gamma' />
    <Item name='Delta' />
  </Section>
  <Item name='Epsilon' />
  <Section id='3'>
    <Item name='Zeta' />
    <Item name='Eta' />
  </Section>
  <Item name='Theta' />
</Section>

The models I have are:

class Section
{
    [XmlAttribute]
    public int Id { get; set; }

    [XmlElement]
    public Item[] Items { get; set; }

    [XmlElement]
    public Section[] Sections { get; set; }
}

class Item
{
    [XmlAttribute]
    public string Name { get; set; }

    public int Index { get; set; }
}

When I deserialise it, as well as keeping the structure and attributes, I want to preserve the item order across the entire file in the Index property. I want to have three Section objects with the following items:

Section 1
    Item Alpha  , index = 0
    Item Beta   , index = 1
    Item Epsilon, index = 4
    Item Theta  , index = 7

Section 2
    Item Gamma  , index = 2
    Item Delta  , index = 3

Section 3
    Item Zeta   , index = 5
    Item Eta    , index = 6

I have a simple incrementor class to keep track of the current index which I can easily pass around. I can't find any way to run custom code when deserialising XML nodes.

I hopefully want to achieve this without rewriting any more of the XML engine than necessary. How do I best approach this?