dolfijn3000 Ответов: 1

Цикл C# через XML-узлы


поэтому я пытаюсь зациклиться на некоторых узлах в xml.

мой xml-файл выглядит следующим образом :
<?xml version="1.0" encoding="utf-8" ?>
<RoundType>
  
  <name>
   StartRound
  </name>
  
  <ActionGroups>
    
    <group>
      <name>
        STANDART
      </name>
      <path>
        STANDART
      </path>
    </group>
    
  </ActionGroups>
  
</RoundType>

я уже пробовал это сделать:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace SurvivalGamesLib
{
    class ActionHandler
    {
        public List<XmlDocument> LoadActions(XDocument roundType) 
        {
            List<XmlDocument> actions = new List<XmlDocument>();

            List<string> groups = new List<string>();

            

            foreach (var node in roundType.Element("RoundType").Element("ActionGroups").Elements("group"))
            {
                Console.WriteLine("test");
                Console.WriteLine(node.Element("name").Value);
            }


            return actions;
        }

    }
}


но когда я запускаю его я всегда получаю эту ошибку:

System.NullReferenceException: 'ссылка на объект не установлена на экземпляр объекта'.

Системы.В формате XML.В LINQ.XContainer.Элемент(...) возвращает null.


есть ли кто-то, кто знает решение для этого ?

Что я уже пробовал:

поиск в google. но все решения, которые я нашел, не сработали в моем случае.

1 Ответов

Рейтинг:
2

Maciej Los

Попробовать это:

foreach (var node in roundType.Root.Descendants("group"))
{
    groups.Add(node.Element("name").Value);
}


или:
List<string> groups = roundType.Root
    .Descendants("group")
    .Select(node => node.Element("name").Value)
    .ToList();