Как мне получить все конкретные XML-элементы для отображения в поле зрения?
У меня есть XML-файл с некоторыми данными, и я хочу получить все элементы по имени тега "ProjectNr" в контроллере, а затем отправить список для просмотра, показывая номера проектов в выпадающем списке.
Проблема с приведенным ниже кодом заключается в том, что он показывает только последний элемент "ProjectNr", что означает, что он перезаписывает каждый элемент до тех пор, пока он не достигнет конца цикла, а затем остается только последний.
Я пытался сделать так, чтобы он сохранил все элементы, но, похоже, ничего не работает. Я довольно новичок в C#, поэтому уверен, что мне не хватает чего-то простого или я делаю что-то совершенно неправильно. ;-)
Есть ли в этом какой-то смысл?
XML-дерево выглядит следующим образом:
<Activities> <Activity> <ActivityName>Projekt</ActivityName> <ProjectNr>001</ProjectNr> </Activity> <Activity> <ActivityName>Absence</ActivityName> <ProjectNr>000</ProjectNr> </Activity> </Activities>
Код в контроллере:
public ActionResult NewActivity() { XElement xelement = XElement.Load(Server.MapPath("/App_Data/ActivitiesData.xml")); IEnumerable<XElement> Activity = xelement.Elements(); foreach (var ProjNrList in Activity) { List<string> list = new List<string>(); list.Add(ProjNrList.Element("ProjectNr").Value); ViewBag.ProjNrList = list; continue; } return View(); }
Что я уже пробовал:
Я думаю, что перепробовал все, но, очевидно, нет. ;-)
Я пробовал multible loops, linq, readXML и множество других способов получения списка. Не знаю, что попробовать дальше. :-(
CHill60
Попробуйте переместить все, кроме обновления, в список вне цикла, т. е.
List<string> list = new List<string>(); foreach (var ProjNrList in Activity) { list.Add(ProjNrList.Element("ProjectNr").Value); } ViewBag.ProjNrList = list; return View();
Member 13123379
Большое вам спасибо! Я знал, что это было что-то простое...; -) теперь это работает.
[no name]
Вы получаете только последнюю запись, потому что в цикле for вы создаете List<string> list = new List<string>(); каждый раз, когда вы повторяете.