如何修改下面的查询以正确处理其中一篇文章中缺少“Summary”元素的情况?现在,当发生这种情况时,我得到一个“对象引用未设置为对象的实例。”
var articles = from article in xmlDoc.Descendants("Article")
select new {
articleId = article.Attribute("ID").Value,
heading = article.Element("Heading").Value,
summary = article.Element("Summary").Value,
contents = article.Element("Contents").Value,
cats = from cat in article.Elements("Categories")
select new {
category = cat.Element("Category").Value
}
};
答案 0 :(得分:1)
问题是article.Element("Summary")
如果找不到元素则会返回null
,因此当您尝试获取Value属性时会得到NullReferenceException
。
要解决此问题,请注意XElement
也有explicit conversion to string
。如果XElement
为null
,则不会抛出 - 您将获得null
字符串引用。
所以要解决你的问题,你可以改变这个:
summary = article.Element("Summary").Value,
到此:
summary = (string)article.Element("Summary")