Parsing XML-Daten in C # und Show in ListBox

Ich versuche, eine XML-Datei in C # mit Visual Studio zu analysieren und die Daten in einer ListBox anzuzeigen, aber ich weiß nicht, wie ich sie analysieren soll, wenn ich mit einer verschachtelten XML-Datei arbeite.

Dies ist der Code aus der XML-Datei:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE root [
  <!ELEMENT root (Persons*)>
  <!ELEMENT Persons (name)>
  <!ELEMENT IsMale (#PCDATA)>
  <!ELEMENT Age (#PCDATA)>
  <!ELEMENT Name (#PCDATA)>
  <!ELEMENT LikedPerson (name)>
 ]>
<root>
  <Persons name ="Bob">
    <IsMale>true</IsMale>
    <Age>30</Age>
    <LikedPerson name ="Iulia">
      <IsMale>false</IsMale>
      <Age>32</Age>
    </LikedPerson>
  </Persons>
</root>

Der Code, den ich in C # geschrieben habe, gibt mir erfolgreich nur den Namen, das Geschlecht und das Alter für jede Person zurück, aber ich weiß nicht, wie ich schreiben soll, um mir auch die person_liked zu zeigen:

private void LoadPersons()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("Baza_de_cunostinte.xml");

        foreach (XmlNode node in doc.DocumentElement) 
        {
            string name = node.Attributes[0].Value;
            int age = int.Parse(node["Age"].InnerText);
            bool isMale = bool.Parse(node["IsMale"].InnerText);

//          Persons likedPerson.name = Persons.node.Attributes[0].Value ?  
//          .....

            listBox.Items.Add(new Persons(name, age, isMale, likedPerson));
        }
    }

    private void listBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox.SelectedIndex != -1)
        {
            propertyGrid1.SelectedObject = listBox.SelectedItem;
        }
    }

Dies ist die Definition der Persons.cs:

class Persons
{
    public string Name { get; private set; }
    public int Age { get; private set; }
    public bool IsMale { get; private set; }
    public Persons LikedPerson { get; private set; }

    public Persons(string name, int age, bool isMale, Persons likedPerson)
    {
        Name = name;
        Age = age;
        IsMale = isMale;
        LikedPerson = likedPerson;
    }
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage