[英]C# XML Linq, reading XML returns NullReferenceException
[英]How can I check for a NullReferenceException in this C# LINQ to XML statement?
我如何在此C#LINQ to XML語句中檢查NullReferenceException,而無需將整個內容包裝在try / catch中? 如果任何屬性為null,我希望它仍然嘗試獲取剩余數據。
謝謝。
XElement doc = XElement.Load("test.xml");
var nodes =
from node in doc.Elements("Customer")
select new
{
Name = node.Element("FullName").Value,
Zip = node.Element("ZipCode").Value,
Active = node.Element("ActiveCustomer").Value,
};
只需使用顯式強制轉換。 如果找不到該元素,它將返回null
,不會導致異常。
var nodes =
from node in doc.Elements("Customer")
select new
{
Name = (string)node.Element("FullName"),
Zip = (string)node.Element("ZipCode"),
Active = (string)node.Element("ActiveCustomer"),
};
使用三元運算符。
XElement doc = XElement.Load("test.xml");
var nodes =
from node in doc.Elements("Customer")
select new
{
Name = node.Element("FullName") !=null ? node.Element("FullName").Value : null,
Zip = node.Element("ZipCode") !=null ? node.Element("ZipCode").Value : null,
Active = node.Element("ActiveCustomer") !=null ? node.Element("ActiveCustomer").Value : null
};
您可以嘗試以下方法:
select new
{
Name = node.Element("FullName")!=null ? node.Element("FullName").Value : null,
Zip = node.Element("ZipCode")!=null ? node.Element("ZipCode").Value : null,
Active = node.Element("ActiveCustomer")!=null ? node.Element("ActiveCustomer").Value : null
};
?
是條件運算符。 有關此問題的更多文檔,請在此處查看 。
您可以使用三元運算符檢查null
。
這樣做:
var nodes =
from node in doc.Elements("Customer")
select new
{
Name = node.Element("FullName") !=null ? node.Element("FullName").Value : null,
Zip = node.Element("ZipCode") !=null ? node.Element("ZipCode").Value : null,
Active = node.Element("ActiveCustomer") !=null ? node.Element("ActiveCustomer").Value : null
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.