.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.IO;
using System.Collections.Generic;
using System.Xml.Serialization;

public class Program
{
	public static void Main()
	{
		const string xml = @"<Invoices>
	<Invoice>
		<InvoiceId>12345</InvoiceId>
		<LineItems>
			<LineItem>
				<LineItemId>123</LineItemId>
			</LineItem>
			<LineItem>
				<LineItemId>456</LineItemId>
			</LineItem>
		</LineItems>
	</Invoice>
</Invoices>";

		var serializer = new XmlSerializer(typeof (InvoiceList));
		
		using (var reader = new StringReader(xml))
		{
			var list = (InvoiceList) serializer.Deserialize(reader);
			Console.WriteLine(list.Invoices.Count);
        }
	}
	
	[XmlRoot("Invoices")]
    public class InvoiceList
    {
        [XmlElement("Invoice")]
        public List<Invoice> Invoices { get; set; }
    }

    public class Invoice
    {
        public int InvoiceId { get; set; }

        public List<LineItem> LineItems { get; set; }
    }

    public class LineItem
    {
        public int LineItemId { get; set; }
    }
}
;