#c# #xml #linq
#c# #xml #linq
Вопрос:
Это XML-файл:
<settings y="1" x="0">
<prospect aksdj="sdf">
<image path="images/1.jpg"/>
</prospect>
<prospect aksdfasdj="safafdf">
<image path="images/2.jpg"/>
</prospect>
</settings>
Я хочу получить обе строки с тегами изображений.
Мой код таков:
XElement doc = XElement.Load(@"C:UsersJohnDesktopFile.xml");
var result = (from c in doc.Descendants("settings")
select new
{
name = c.Element("prospect").Value
}).ToList();
Но, док.Потомки («настройки») равно нулю. Почему это значение равно нулю?
Комментарии:
1. Кстати, ваш образец XML поврежден — последняя строка должна быть закрывающим тегом. Насколько он репрезентативен для вашего реального файла?
2. Извините, когда я сократил файл, чтобы поместить его сюда, я по ошибке стер его : (
Ответ №1:
Вы загрузили элемент, который уже является <settings>
элементом — у этого элемента нет <settings>
потомков. ( Descendants
null
кстати, это не возвращает вам пустую последовательность. Есть большая разница.)
Если вы измените его на
XDocument doc = XDocument.Load("...");
тогда все должно быть в порядке — или просто загрузите его как XElement
и найдите <prospect>
потомков, учитывая, что у вас все равно есть только один <settings>
элемент…
Комментарии:
1. Я нашел потомков <prospect>, и все в порядке 🙂