using System.Collections.Generic;
using System.Xml.Serialization;
public static void Main()
string xmlData = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<dependency>1</dependency>
<dependency>2</dependency>
<dependency>4</dependency>
<dependency>2</dependency>
<dependency>5</dependency>
var serializer = new XmlSerializer(typeof(Nodes));
using (TextReader reader = new StringReader(xmlData))
result = (Nodes)serializer.Deserialize(reader);
public static IEnumerable<int> Parse(Nodes source,int Id)
var node = source.Node.First(x=>x.Id == Id);
foreach(var d in node.Dependency)
foreach(var item in Parse(source,d))
[XmlRoot(ElementName="node")]
[XmlElement(ElementName="id")]
public int Id { get; set; }
[XmlElement(ElementName="dependency")]
public List<int> Dependency { get; set; }
[XmlRoot(ElementName="nodes")]
[XmlElement(ElementName="node")]
public List<Node> Node { get; set; }