Du kannst die CreateElement Methode des XmlDocument verwenden und dann das erstellte Element dem übergeordneten XmlElement mit AppendChild hinzufügen.
foreach (BasicNode node in nodes)
{
    XmlElement nodeElement = xmlDoc.CreateElement("Node");
    nodeElement.SetAttribute("type", node.ToString());
    foreach (InputPort ip in node.InputPorts)
    {
        // Erstelle ein InputPort-Element
        XmlElement portElement = xmlDoc.CreateElement("InputPort");
        // Füge dem InputPort-Element weitere Informationen hinzu, falls erforderlich
        portElement.SetAttribute("name", ip.Name);
        // Füge weitere Attribute oder Daten hinzu, je nach Bedarf
        // Füge das InputPort-Element zum Node-Element hinzu
        nodeElement.AppendChild(portElement);
    }
    // Füge das Node-Element zum Root-Element hinzu
    root.AppendChild(nodeElement);
}