我正在尝试创建一个XElement,它从另一个从文件构建的XElement中读取。以下是代码示例。我的问题是如何围绕可能不存在的源属性进行编码? docHeader和invoice是XElements。在缺少一个属性的情况下运行时,我得到“对象引用未设置为对象的实例”错误。
我想我问的是,如果元素和属性不存在,是否有'安全'的方法来阅读它们?
invoice.Add(
new XAttribute("InvoiceNumber", docHeader.Attribute("InvoiceNumber").Value),
new XAttribute("InvoiceSource", docHeader.Attribute("InvoiceSource").Value));
答案 0 :(得分:0)
您收到异常,因为如果属性InvoiceSource
不存在,docHeader.Attribute("InvoiceSource")
将返回null。像
if (docHeader.Attribute("InvoiceSource") != null)
{
// here you can be sure that the attribute is present
}
就足够了。
答案 1 :(得分: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));
}