正在读取C#中的xelement.add方法中可能缺少的属性
本文关键字:属性 方法 读取 中的 add xelement | 更新日期: 2023-09-27 18:28:49
我正在尝试创建一个XElement,该XElement从另一个从文件构建的XElement中读取。下面是一个代码示例。我的问题是,如何围绕可能不存在的源属性进行编码?docHeader和发票是X元素。当在缺少一个属性的地方运行此程序时,我会得到一个"Object reference not set to a instance of a Object"错误。
我想我在问,有没有一种"安全"的方式来读取元素和属性,以防它们不存在?
invoice.Add(
new XAttribute("InvoiceNumber", docHeader.Attribute("InvoiceNumber").Value),
new XAttribute("InvoiceSource", docHeader.Attribute("InvoiceSource").Value));
您将得到异常,因为如果属性InvoiceSource
不存在,docHeader.Attribute("InvoiceSource")
将返回null。像这样的简单检查
if (docHeader.Attribute("InvoiceSource") != null)
{
// here you can be sure that the attribute is present
}
就足够了。
尝试分解代码,使其更加灵活和可读。
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));
}