using System.Collections.Generic;
using System.Xml.Serialization;
public static void Main()
Preferences preferences = null;
var xmlString = Data.XML;
using (var stream = new StringReader(xmlString))
var serializer = new XmlSerializer(typeof(Preferences));
preferences = (Preferences)serializer.Deserialize(stream);
if (preferences.Font.Contains(node0))
Console.WriteLine($"'{nameof(node0)}' is already present");
if (preferences.Font.Contains(node1))
Console.WriteLine($"'{nameof(node1)}' is already present");
[XmlRoot(ElementName = "font")]
public class Font : IEquatable<Font>
[XmlElement(ElementName = "size")]
public string Size { get; set; }
[XmlElement(ElementName = "fname")]
public string Fname { get; set; }
[XmlAttribute(AttributeName = "role")]
public string Role { get; set; }
public bool Equals(Font font)
if (font == null) return false;
return (Size == font.Size) && (Fname == font.Fname) && (Role == font.Role);
[XmlRoot(ElementName = "preferences")]
[XmlElement(ElementName = "font")]
public List<Font> Font { get; set; }
public static string XML = @"
<fname>Times New Roman</fname>