.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;

public class Program
{
    public static void Main()
    {
        const string xml = @"<myXML>
    <MyGroup>
        <source>OCU</source> 
        <endianity>
            <set>LITTLE</set><!--LITTLE/BIG Endian-->
        </endianity>
       <msgNumber>
          <Number>5</Number>
          <Field>
            <name>Pos_X</name>
            <entry>
                 <ByteOffset>
                    <offset>8</offset>
                 </ByteOffset>
                 <ByteSize>
                    <Size>4</Size>
                 </ByteSize>
            </entry>
          </Field>
          <Field>
            <name>Pos_Y</name>
            <entry>
                 <ByteOffset>
                    <offset>12</offset>
                 </ByteOffset>
                 <ByteSize>
                    <Size>4</Size>
                 </ByteSize>
            </entry>
          </Field>
       </msgNumber>
    </MyGroup>
</myXML>";

        var doc = XDocument.Parse(xml);

        var msgs =
            from msg in doc.Descendants("msgNumber")
            select new Message
            {
                Number = (int) msg.Element("Number"),
                Fields = msg
                    .Elements("Field")
                    .Select(x => new Field
                    {
                        Name = (string) x.Element("name"),
                        ByteOffset = (int) x.Descendants("offset").Single(),
                        ByteSize = (int) x.Descendants("Size").Single(),
                    })
                    .ToList()
            };

        foreach (var msg in msgs)
        {
			Console.WriteLine("Msg: {0}", msg.Number);

            foreach (var field in msg.Fields)
            {
                Console.WriteLine("{0}: Offset {1} Size {2}", field.Name, field.ByteOffset, field.ByteSize);
            }
        }
    }
}

public class Message
{
    public int Number { get; set; }
    public List<Field> Fields { get; set; }
}

public class Field
{
    public string Name { get; set; }
    public int ByteOffset { get; set; }
    public int ByteSize { get; set; }
}
;