Рассмотрим этот XML-файл.Обратите внимание, что первый учебник имеет дочерний элемент Author, а второй учебник не:
<?xml version="1.0" encoding="utf-8" ?>
<Tutorials>
<Tutorial>
<Author>The Tallest</Author>
<Title>
WPF Tutorial - Creating A Custom Panel Control
</Title>
<Date>2/18/2008</Date>
</Tutorial>
<Tutorial>
<Title>
2nd WPF Tutorial - Creating A Custom Panel Control
</Title>
<Date>2/18/2008</Date>
</Tutorial>
</Tutorials>
Как использовать LINQ-to-XML для загрузки имеющихся данных?Приведенный ниже код взрывается, когда он попадает в раздел Tutorial, в котором нет автора.Я не могу понять, как написать оператор where, чтобы исключить блок, в котором отсутствует автор, или как сделать так, чтобы код элегантно пропускал пропущенные данные.Я пробовал это:
where tutorial.Element("Title") != null
Но вышеупомянутое не имеет никакого эффекта .... Вот код проблемы:
XDocument xmlDoc = XDocument.Load("C:\\xml\\2.xml");
var tutorials = from tutorial in xmlDoc.Descendants("Tutorial")
select new
{
Author = tutorial.Element("Author").Value,
Title = tutorial.Element("Title").Value,
Date = tutorial.Element("Date").Value,
};
foreach (var tutorial in tutorials)
{
Console.WriteLine("author: " + tutorial.Author);
Console.ReadKey();
}