linq bilmiyorsan öğrenmek için iyi bir fırsat olabilir bence yani zor olur diye bakma. harici xml parser kütüphaneleri var bu işleri daha da kolaylaştıran onları araştır ve onları kullan. sonra sorgulamalarında linq kullanarak ya da lambda expression kullanarak istediğin veriyi al. mesela

var MuhendislikDepartmaniID = Departmanlar.Where(d=>d.Name == "Mühendislik").First().DepartmanID;

var muhendisler= personneller.Where(p=>p.DepartmanID == MuhendislikDepartmaniID);

foreach(muhendis in muhendisler)
Console.WriteLine(muhendis.Ad);
gibi bir mantık yürütebilirsin belki yazdığım kodu anlamadın ama kısaca bi özet geçeyim.

not: kodu elle yazdım direk kopyalayıp yapıştırırsan çalışmaz. sadece işleyişi bu şekilde olabilir diye düşün.

ilk satırda departmanlar parentnode undan mühendislik olanının departman idsini muhendislik deparmanid ye eşitledim.

ikinci satırda persnel parentnode undan hangi prsonelin departman idsi mühendislik departman id sine eşitse onları mühendisler değişkenine eşitledim.

sonra da foreach ile bu mühendislerin isimlerini ekrana yazdırdım..

iki satır kodla koskoca iş yapıldı if ve for kullanarak çok daha uzardı.