Linq2XML缺少元素

时间:2010-12-22 21:19:00

标签: asp.net xml linq

如何修改下面的查询以正确处理其中一篇文章中缺少“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
            }
};

1 个答案:

答案 0 :(得分:1)

问题是article.Element("Summary")如果找不到元素则会返回null,因此当您尝试获取Value属性时会得到NullReferenceException

要解决此问题,请注意XElement也有explicit conversion to string。如果XElementnull,则不会抛出 - 您将获得null字符串引用。

所以要解决你的问题,你可以改变这个:

summary = article.Element("Summary").Value,

到此:

summary = (string)article.Element("Summary")