У меня есть следующий XML (урезанная версия) Файл:Выбор нескольких элементов в XML
<Service z:Id="i1" xmlns="http://schemas.datacontract.org/2004/07/BusExpress.ClassLibrary" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<routes>
<Route z:Id="i4">
<timetables>
<Timetable z:Id="i8">
<timetableId>11061</timetableId>
</Timetable>
<Timetable z:Id="i8">
<timetableId>11062</timetableId>
</Timetable>
</timetables>
</Route>
</routes>
</Service>
Я могу получить первый ID: 11061, но я хочу, чтобы получить второй, в реальной файла будет несколько других. Но я предполагаю, что когда-то я могу получить два он будет получать больше, чем 2.
XDocument doc = XDocument.Load("timetableTest.xml");
XNamespace ns = "http://schemas.datacontract.org/2004/07/BusExpress.ClassLibrary";
var routeNames = (from n in doc.Descendants(ns + "Service").Descendants(ns + "routes").Descendants(ns + "Route")//.Descendants(ns + "timetables")//.Descendants(ns + "Service")
select new RootContainer
{
Services = (from s in n.Elements(ns + "timetables")//.Elements(ns + "clients")
// where n.Elements(ns + "Service") != null
select new Services
{
ServiceName = s.Element(ns + "Timetable").Element(ns + "timetableId").Value,
//serviceIconUrl = "/Assets/Services/" + s.Element(ns + "serviceName").Value + ".png",
// ServiceId = s.Element(ns + "serviceId").Value
}).ToList()
}).Single();
listServices.ItemsSource = routeNames.Services;
Что мне нужно изменить, чтобы получить множественный Расписание Идентификаторы?
Обновление: Как мне сделать то же самое, но с двумя путями? Просто просмотрите исходный XML-канал.
<Service z:Id="i1" xmlns="http://schemas.datacontract.org/2004/07/BusExpress.ClassLibrary" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<routes>
<Route z:Id="i4">
<timetables>
<Timetable z:Id="i8">
<timetableId>11061</timetableId>
</Timetable>
<Timetable z:Id="i8">
<timetableId>11062</timetableId>
</Timetable>
</timetables>
</Route>
<Route z:Id="i4">
<timetables>
<Timetable z:Id="i8">
<timetableId>11061</timetableId>
</Timetable>
<Timetable z:Id="i8">
<timetableId>11062</timetableId>
</Timetable>
</timetables>
</Route>
</routes>
</Service>
Вы понимаете, что существует очень подозрительный вид '.Single()' в конце вашего выбора.? Также https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.selectnodes(v=vs.110).aspx смотрится намного easiert, чем это вложенная LINQ –