У меня есть следующие в моем XML:Как получить значения этого xml с помощью linq?
<mur>
<bak>
</bak>
<itemfb ident="c_fb">
<flow_m>
<mat>
<text texttype="text/plain">correct answer comments</text>
</mat>
</flow_m>
</itemfb>
<itemfb ident="gc_fb">
<flow_m>
<mat>
<text texttype="text/plain">wrong, you made a blunder</text>
</mat>
</flow_m>
</itemfb>
</mur>
Теперь Тег «itemfb», может или не может существовать внутри тега «МУР», и если существует, то мне нужно разобрать и получить значения «правильно ответьте на комментарии »(или)« неправильно, вы сделали ошибку »в зависимости от идентификатора« itemfb ». Вот что я пробовал. Предположим, rowObj имеет загруженный XML от «мур» и «нс» является пространством имен
if (rowObj.Elements(ns + "itemfb").Any())
{
var correctfb = (from cfb in rowObj
.Descendants(ns + "itemfb")
where (string)cfb.Attribute(ns + "ident").Value == "cfb"
select new
{
ilcfb = (string)cfb.Element(ns + "mat")
}).Single();
some_variable_1 = correctfb.ilcfb;
var incorrectfb = (from icfb in rowObj
.Descendants(ns + "itemfb")
where (string)icfb.Attribute(ns + "ident").Value == "gcfb"
select new
{
ilicfb = (string)icfb.Element(ns + "mat")
}).Single();
some_variable_2 = incorrectfb.ilicfb;
}
Это может сработать, но что произойдет, если тег не существует. Он выбрасывает исключение «ссылка на объект» в «.Where (e => e.Attribute (ns +« ident »). Значение ==« c_fb »)« – user2085236
Идентификатор может отсутствовать внутри itemfb? –
Если itemfb не существует, он также работает, поэтому я положил FirstOrDefault() в конец. Он может потерпеть неудачу, если идентификатор не существует в itemfb, но это не было в указанных вами ограничениях. Во всяком случае, есть способы решить это. –