2012-03-24 22 views
0

我正在嘗試創建從另一個XElement讀取的XElement,該XElement從文件構建而來。以下是代碼示例。我的問題是我如何編碼可能不在那裏的源屬性? docHeader和發票是XElements。在缺少一個屬性的情況下運行時,會出現「未設置爲對象實例的對象引用」錯誤。從C#中的xelement.add方法中可能缺失的屬性讀取數據

我想我是問有沒有一種'安全'的方式來閱讀元素和屬性,以防他們不在那裏?

invoice.Add(
    new XAttribute("InvoiceNumber", docHeader.Attribute("InvoiceNumber").Value), 
    new XAttribute("InvoiceSource", docHeader.Attribute("InvoiceSource").Value)); 

回答

0

你所得到的異常,因爲如果屬性InvoiceSource不存在,docHeader.Attribute("InvoiceSource")返回null。簡單檢查如

if (docHeader.Attribute("InvoiceSource") != null) 
{ 
    // here you can be sure that the attribute is present 
} 

就足夠了。

+0

謝謝尼古拉。因爲我有大約40人要做,所以我試圖不必分配任務,但我想我沒有選擇。 – Styxtb1598 2012-03-24 17:45:22

0

試着分解代碼,使其更加靈活和可讀。

var src = docHeader.Attribute("InvoiceSource"); 
var num = docHeader.Attribute("InvoiceNumber"); 

if(src != null && num != null) 
{ 
    invoice.Add(
    new XAttribute("InvoiceNumber", num.value), 
    new XAttribute("InvoiceSource", src.value)); 
} 
相關問題