Я в настоящее время имеют формат файла XML, который выходит что-то вроде этого (пропуски и эллипсы добавляемые для удобства чтения):C# Linq для XML - Разбираем Уплотненный Список объектов
<root>
<Module> //Start with list of Modules
<ModuleParams>
</ModuleParams>
</Module>
...
<DetectLine> //Now a list of DetectLines
<DetectLineParams>
</DetectLineParams>
<Channels> //List of Channels embedded in each DetectLine
<Channel>
<ChannelParams>
</ChannelParams>
</Channel>
...
</Channels>
</DetectLine>
...
</root>
Классы структурированы следующим образом:
public class Module
{
public ModuleParams { get; set; }
}
public class DetectLine
{
public DetectLineParams { get; set; }
public List<Channel> Channels { get; set; }
}
public class Channel
{
public ChannelParams { get; set; }
}
Список модулей и DetectLines легко анализируется с Linq для XML. Однако разбор списка каналов для каждой DetectLine для меня не так важен. Можно ли это сделать с Linq для XML? Я бы предпочел не реструктурировать вещи для работы с XMLSerializer.
Начальный код (OpenXml является OpenFileDialog уже проверен на хорошее имя файла.):
List<Module> myModules;
List<DetectLine> myDetectLines;
XDocument config = XDocument.Load(openXML.FileName);
myModules =
(from myElements in config.Descendants("Module")
select new Module()
{
ModuleParam1 = (string)myElements.Element("ModuleParam1"),
ModuleParam2 = (string)myElements.Element("ModuleParam2"),
...
}).ToList<Module>();
myDetectLines =
(from myElements in config.Descendants("DetectLine")
select new DetectLine()
{
DetectLineParam1 = (string)myElements.Element("ModuleParam1"),
DetectLineParam2 = (string)myElements.Element("ModuleParam2"),
...
// ?? Add Channels list here somehow...
}).ToList<DetectLine>();
Дает использовать ваш код для модулей и DetectLines – MarcinJuraszek
Моих рассуждений для поддержания классов так общих потому, что фактические параметры до me (это конфигурационный файл для моей программы, который я определяю и сохраняю. Формат просто упрощает чтение/отладку/запись вручную). Я добавил свою текущую методологию анализа, чтобы показать, что я ищу. Мне не нужен кто-то, чтобы решить XML или классы самостоятельно, просто совет по разбору с запросом Linq. – Bandoth