C# 读取C中xelement.add方法中可能缺少的属性
我正在尝试创建一个XElement,该XElement读取从文件构建的另一个XElement。下面是代码示例。我的问题是,如何对可能不存在的源属性进行编码?单据头和发票都是要素。在缺少一个属性的情况下运行此命令时,我得到一个对象引用,该引用未设置为对象错误的实例 我想我是在问,如果元素和属性不存在,是否有一种“安全”的方法来读取它们C# 读取C中xelement.add方法中可能缺少的属性,c#,xelement,xattribute,C#,Xelement,Xattribute,我正在尝试创建一个XElement,该XElement读取从文件构建的另一个XElement。下面是代码示例。我的问题是,如何对可能不存在的源属性进行编码?单据头和发票都是要素。在缺少一个属性的情况下运行此命令时,我得到一个对象引用,该引用未设置为对象错误的实例 我想我是在问,如果元素和属性不存在,是否有一种“安全”的方法来读取它们 invoice.Add( new XAttribute("InvoiceNumber", docHeader.Attribute("InvoiceNumbe
invoice.Add(
new XAttribute("InvoiceNumber", docHeader.Attribute("InvoiceNumber").Value),
new XAttribute("InvoiceSource", docHeader.Attribute("InvoiceSource").Value));
您将获得异常,因为如果属性InvoiceSource不存在,则docHeader.AttributeInvoiceSource将返回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));
}
谢谢你,尼古拉。我尽量不把作业分解,因为我有大约40个作业要做,但我想我别无选择。