C# 如何检查XML中是否存在元素
这里的if条件工作不正常。它正在传递条件并进入并给出null异常。这是正确的检查方法吗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)
我正在使用.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()
。