C# 如何检查XML中是否存在元素

C# 如何检查XML中是否存在元素,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,这里的if条件工作不正常。它正在传递条件并进入并给出null异常。这是正确的检查方法吗 我正在使用.NET FRAMEWORK 4.0您需要为每个元素调用检查null: XElement root = XElement.Load("e_test.xml") XElement book = root.Elements("book") .Where(x => (int) x.Element("id") == 20)

这里的if条件工作不正常。它正在传递条件并进入并给出null异常。这是正确的检查方法吗


我正在使用.NET FRAMEWORK 4.0

您需要为每个
元素
调用检查
null

XElement root = XElement.Load("e_test.xml")
XElement book = root.Elements("book")
                    .Where(x => (int) x.Element("id") == 20)
                    .SingleOrDefault();
if (book == null)
{
    // No book with that ID
}



if(book.Element("read").Element("num") != null) //check the node exist
{
    int num = (int) book.Element("read").Element("num");
}
在C#6中,您可以使用
?。
运算符使其感觉更好:

if(book != null && book.Element("read") != null && book.Element("read").Element("num") != null) //check the node exist

您需要为每个
元素
调用检查
null

XElement root = XElement.Load("e_test.xml")
XElement book = root.Elements("book")
                    .Where(x => (int) x.Element("id") == 20)
                    .SingleOrDefault();
if (book == null)
{
    // No book with that ID
}



if(book.Element("read").Element("num") != null) //check the node exist
{
    int num = (int) book.Element("read").Element("num");
}
在C#6中,您可以使用
?。
运算符使其感觉更好:

if(book != null && book.Element("read") != null && book.Element("read").Element("num") != null) //check the node exist

你说了你在使用哪个版本的.NET,但没有说你在使用哪个版本的C。它们不是同一件事。我只是用xml尝试了你的代码,没有得到空引用异常。似乎缺少了一些东西。您已经说了您正在使用哪个版本的.NET,但没有说您正在使用哪个版本的C#。它们不是同一件事。我只是用xml尝试了你的代码,没有得到空引用异常。似乎缺少一些内容。另一种方法是使用
元素(“读取”).Elements(“num”).FirstOrDefault()
。另一种方法是使用
元素(“读取”).Elements(“num”).FirstOrDefault()