0

我正在尝试创建一个从文件构建的另一个 XElement 读取的 XElement。下面是代码示例。我的问题是如何围绕可能不存在的源属性进行编码?docHeader 和 invoice 是 XElements。在缺少一个属性的情况下运行此命令时,我收到“对象引用未设置为对象的实例”错误。

我想我在问是否有一种“安全”的方式来读取元素和属性,以防它们不存在?

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

2 回答 2

0

您收到异常是因为如果该属性InvoiceSource不存在,则docHeader.Attribute("InvoiceSource")返回 null。简单的检查如

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

就足够了。

于 2012-03-24T17:03:18.347 回答
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)); 
}
于 2012-03-24T17:07:21.363 回答