У меня есть XML, который содержит различную информацию о flightPlan. Мне нужно взять данные этого плана полета, используя метку «RoutePoints». Пример ниже представляет собой псевдокод для представления структуры. Символ «+» обозначает, что раздел может расширяться.
<RoutePoints>
+<a:anyType z:Id="411" i:type="RoutePointTakeOff">
+<a:anyType z:Id="472" i:type="RoutePoint">
+<a:anyType z:Id="518" i:type="RoutePoint">
<a:anyType z:Ref="349" i:nil="true"/>
<a:anyType z:Ref="272" i:nil="true"/>
+<a:anyType z:Id="576" i:type="RoutePoint">
+<a:anyType z:Id="638" i:type="RoutePointLanding">
</RoutePoints>
Из-за разного типа элементов, которые нужно обрабатывать по-разному. Я пытался использовать инструмент foreach для доступа к этим элементам, пример ниже:
foreach ( var routes in document.Descendants("RoutePoints") ){
foreach ( var points in routes.Elements() ) {
if ( points.Attributes(i+"type").First().Value == "RoutePoint") {
//Processing..
}
if ( points.Attributes(i+"type").First().Value == "RoutePointTakeOff") {
//Processing..
}
if ( points.Attributes(i+"nil").First().Value == "true") {
//Processing..
}
if ( points.Attributes(i+"type").First().Value == "RoutePointLanding") {
//Processing..
}
}
}
Когда условие if проверяет атрибуты для сравнения значения, и оно не существует, например, проверяется значение RoutePointTakeOff, и оно не существует, поскольку это значение находится в первой строке, а теперь проверяется во второй строке.
Мне нужно взять элемент, информация, которую мне нужно обработать, находится внутри элементов. Например, внутри RoutePoint мне нужно инициализировать некоторые атрибуты со значениями, которые содержат. Внутри RoutePointTakeOff мне нужно выполнить несколько алгоритмов. Проблема в том, что мне нужно выполнить разные функции в зависимости от секции, где указатель находится
Я - новое программирование на C #, и я уверен, что существуют другие лучшие формы для доступа к данным этого типа.
Не могли бы вы помочь мне получить доступ к этим данным по типу?