Простой LINQ синтаксис для получения имен приведен ниже. Предполагается, что у вас XML загружен в переменную XDocument с именем doc
.
var nodeNames = from node in doc.Descendants("Person").First().Descendants()
select node.Name.LocalName;
Это смотрит только на первого человека. Если у вас есть более одного в XML-документе, список имен, вероятно, не тот, который вы хотели бы (нет причин повторять все имена узлов снова и снова). Таким образом, вы получите список только имен узлов для первого лица, но он предполагает, что у первого будет полный список имен. Если они различаются, вам нужно создать отдельный список из всех узлов.