나는 현재 (가독성을 위해 추가 공백 및 타원) 이런 식 XML 파일 형식이C#을 Linq는 XML에 구문 분석 중첩 된 개체 목록
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; }
}
Modules 및 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